当前位置:   article > 正文

35. Search Insert Position

35. Search Insert Position

Given a sorted array of distinct integers and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.

You must write an algorithm with O(log n) runtime complexity.

Example 1:

Input: nums = [1,3,5,6], target = 5
Output: 2

Example 2:

Input: nums = [1,3,5,6], target = 2
Output: 1

Example 3:

Input: nums = [1,3,5,6], target = 7
Output: 4

Constraints:

  • 1 <= nums.length <= 104
  • -104 <= nums[i] <= 104
  • nums contains distinct values sorted in ascending order.
  • -104 <= target <= 104

注意事项:

        1.其实这题主要也是用二分搜索法,只不过稍微有一点变化,新增加了一个变量,ret,初始值必须要设为nums.size(),我一开始没注意到,就有过不了的,就是有可能target比nums[nums.size()-1]的值都要大。

        2.ret=middle,ret的值随着middle的值而变化,说到这个,也有一个middle的小细节,middle=(left+right)/2要放到while循环的内部,随着left和right的变化而变化。

        3.我一开始写的时候还没有转过弯来,没有用到二分法,写的一团乱麻,甚至连left和right的值都没有变。

  1. class Solution {
  2. public:
  3. int searchInsert(vector<int>& nums, int target) {
  4. int left=0;
  5. int right=nums.size()-1;
  6. int ret=nums.size();
  7. while(left<=right){
  8. int middle=(left+right)/2;
  9. if(nums[middle]>=target){
  10. ret=middle;
  11. right=middle-1;
  12. }
  13. else{
  14. left=middle+1;
  15. }
  16. }
  17. return ret;
  18. }
  19. };

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/698873
推荐阅读
相关标签
  

闽ICP备14008679号