LeetCode刷题笔录 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 Solution {
    public int searchInsert(int[] A, int target) {
        for(int i = 0; i < A.length; i++){
            if(A[i] < target)
                continue;
            else 
                return i;
        }
        return A.length;
    }
}

改进一下,可以用binary search。只要注意一下什么时候该返回什么值就行了,比较简单。

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





你可能感兴趣的:(java,LeetCode)