LeetCode35-搜索插入位置(二分查找)

1、在一个排序的数组里面,寻找一个目标值,并且没有重复数字,很自然就想到了二分查找

2、如果没找到,要找应该插入的位置。

 

整个的思路就是,先用二分查找,然后在返回值里面+1或-1,反正应该插入的地方就是旁边嘛,但是发现直接写下来,i和j就是返回值了。美滋滋

 

通过区间,有无意义来记忆二分查找的写法,的确很容易

public int searchInsert(int[] nums, int target) {
        //[0,len)开区间
        int i=0,j=nums.length;

        //因为是前闭后开,i=j的时候,其实就是没有意义了
        while(i<j){

            int mid = (i+j)/2;
            if(nums[mid]==target)
                return mid;
            if(target<nums[mid])
                j=mid;//因为开区间,刚好没有取到mid
            else
                i=mid+1;//闭区间,为了不取到mid,只能+1

        }

        return j;
    }

 

超过了100%,美滋滋

 

posted @ 2018-07-19 21:01  朋友圈  阅读(114)  评论(0编辑  收藏  举报