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%,美滋滋

猜你喜欢

转载自www.cnblogs.com/weizhibin1996/p/9338379.html