这两道题的本质是一样的,都是整数二分查找。题目给出的条件比较强,序列是严格单调递增的。
但是我这个即使序列存在重复的元素也可以满足需求
class Solution { public: int searchInsert(vector<int>& nums, int target) { int size = nums.size(); int i = 0,j = size - 1; int mid = (i+j)/2; while(i <= j){ if(target > nums[mid]) i = mid + 1; else j = mid - 1; mid = (i+j)/2; } return i; } }; //i <= j //if(target > nums[mid]) i = mid + 1; //return i //记住这三个最重要的点,可以免得次次使用二分都得调试
class Solution { public: int search(vector<int>& nums, int target) { int size = nums.size(); int i = 0,j = size - 1; int mid = (i+j)/2; while(i <= j){ if(target > nums[mid]) i = mid + 1; else j = mid - 1; mid = (i+j)/2; } if(i == size || nums[i] != target) return -1; //i 不会在左边越界。 //如果 i 在右边越界了,或者结束时不是要找的target,那么target就不存在 return i; } };
标签:二分,target,nums,int,leetcode704,mid,查找,size From: https://www.cnblogs.com/uacs2024/p/18546205