🌻算法,不如说它是一种思考方式🍀
算法专栏: 👉🏻123
这个题要求O(log n) 的算法,且就描述来看也是一个二分法的模子,也不用去考虑暴力搜索了。
不同的地方在于没有目标元素的时候要求返回一个插入的位置。那是不是在判断left<=right
不成立的时候插入,而最后的时刻可能是left右移
也可能是right左移
导致搜索结束:
最后时刻left右移
表示target大于【middle】,应该插入的就是middle右边,刚好此时left右移到该位置;
最后时刻right左移
,表示target小于【middle】,应该插入的就是middle左边,而这是也正式left所指位置;
所以不管最后是哪一个操作,最后插入的位置都是left
。
例如:
例如:
int middle ;int left=0,right= nums.length-1;while(left<=right){middle=left+(right-left)/2;if(target==nums[middle])return middle;else if(targetright=middle-1;}else{left=middle+1;}}return left;
本题只需要在搜索结束未命中的时候考虑在哪个位置插入。
☕物有本末,事有终始,知所先后。🍭
🍎☝☝☝☝☝我的CSDN☝☝☝☝☝☝🍓