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