# 35. 搜索插入位置open in new window

思路:

看到到有序无重复元素,查询位置,果断使用二分查找。

代码


public class SearchInsert {

    public int searchInsert(int[] nums, int target) {
        /**
         * 二分
         */
        int high = nums.length - 1;
        int low = 0;
        while (low <= high) {
            int mid = (low + high) / 2;
            if (target > nums[mid]) {
                low = mid + 1;
            } else if (target < nums[mid]) {
                high = mid - 1;
            }else {
                return mid;
            }
        }
        return low;
    }
    public int searchInsert2(int[] nums, int target){
        return rank(nums,0,nums.length-1,target);
    }
    public  int rank(int[]nums,int low,int high,int key){
        int mid=(low+high)/2;
        if (low<high){
            return low;
        }
        if (key< nums[mid]){
            return rank(nums,low,mid-1,key);
        }else if (key>nums[mid]){
            return rank(nums,mid+1,high,key);
        }else {
            return mid;
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38