您的位置:首页 > 其它

[LeetCode35]Search Insert Position

2015-11-09 15:44 465 查看
题目来源:https://leetcode.com/problems/search-insert-position/
点击打开链接

Given a sorted array 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 may assume no duplicates in the array.

Here are few examples.
[1,3,5,6]
, 5 → 2
[1,3,5,6]
, 2 → 1
[1,3,5,6]
, 7 → 4
[1,3,5,6]
, 0 → 0
分析:     

    这题要求在一个排好序的数组查找某值value, 如果存在则返回对应index, 不存在则返回能插入到数组中的

index( 保证数组有序) 。
     对于不存在的情况, 我们只需要在数组里面找到最小的一个值大于value的index, 这个index就是我们可以
插入的位置。 譬如[1, 3, 5, 6], 查找2, 我们知道3是最小的一个大于2的数值, 而3的index为1, 所以我们需
要在1这个位置插入2。 如果数组里面没有值大于value, 则插入到数组末尾。

class Solution35{
public:
int searchInsert(vector<int>& nums, int target){
int left = 0;
int right = nums.size() - 1;

while (left <= right){
int mid = left + (right-left) / 2;
if (target == nums[mid]){
return mid;
}
else if (target < nums[mid]){
right = mid - 1;
}
else{
left = mid + 1;
}
}
return left;
}
};
int main()
{
Solution35 solution;
{
vector<int> v = { 1, 3, 5, 6 };
int target = 5;
cout << solution.searchInsert(v, target);
}
getchar();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: