题目:题目链接
思路:二分查找。
直接看代码:
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int low = 0, high = nums.size() - 1;
while (low <= high) {
int mid = low + (high - low) / 2;
if (nums[mid] == target) return mid;
else if (nums[mid] > target) high = mid - 1;
else low = mid + 1;
}
return low;
}
};
为什么返回low呢,其实返回high+1也是可以的。因为当循环终止的前一步是low==high,如果此时nums[low]>targer,那么low++,high不变,此时low就是要插入的位置。如果nums[low]<target,low不动,high–,此时low也是要插入的位置。所以不管如何low总是要插入的位置,对应的high+1也是。
一道easy题,应该不是很难。加油!!!