Search Insert Position 找适合插入的位置@LeetCode

二分法变型
可以把target想象成要找的位置,然后low和high想象成游标


package Level2;

/**
 * 
 *  Search Insert Position
 *  
 *  Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.

You may assume no duplicates in the array.

Here are few examples.
[1,3,5,6], 5 → 2
[1,3,5,6], 2 → 1
[1,3,5,6], 7 → 4
[1,3,5,6], 0 → 0
 *
 */
public class S36 {

	public static void main(String[] args) {
		int[] A = {1,3,5,6};
		int target = 7;
		
		System.out.println(searchInsert(A, target));
	}

	public static int searchInsert(int[] A, int target) {
        int low = 0, high = A.length-1;
        int mid = low + (high-low)/2;
        
        while(low <= high){
        	mid = low + (high-low)/2;
        	if(A[mid] == target){
        		return mid;
        	}else if(target > A[mid]){
        		low = mid+1;
        	}else{
        		high = mid-1;
        	}
        }
        
        // 返回下限值,此时刚好为适合插入的位置
        return low;
    }
	
}



public class Solution {
    public int searchInsert(int[] A, int target) {
        int low = 0, high = A.length-1;
        while(low <= high){
            int mid = low + (high-low)/2;
            if(A[mid] == target){
                return mid;
            }else if(A[mid] > target){
                high = mid-1;
            }else{
                low = mid+1;
            }
        }
        return low;
    }
}



你可能感兴趣的:(Search Insert Position 找适合插入的位置@LeetCode)