赞
踩
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
- 可以假设数组中无重复元素。
-
- 示例 1:
- 输入: [1,3,5,6], 5
- 输出: 2
-
- 示例 2:
- 输入: [1,3,5,6], 2
- 输出: 1
注意到是按顺序排列的数组,那么按顺序遍历,如果找到,则跳出循环返回索引即可
如果找到最后还没找到,则返回数组长度索引值即为插入位置
- class Solution {
- public:
- int searchInsert(vector<int>& nums, int target) {
- int i=0;
- while(target>nums[i])
- {
- i++;
- if(i==nums.size())
- break;
- }
- return i;
- }
- };
利用二分查找可以更快的找到,只需要修改返回值即可,注意获取mid的计算方法考虑了溢出
- class Solution {
- public:
- int searchInsert(vector<int>& nums, int target) {
- int low = 0;
- int mid;
- int high = nums.size()-1;
-
- while(low <= high)
- {
- mid = low + (high - low) / 2;
-
- if(target > nums[mid]) {
- low = mid + 1;
- } else if(target<nums[mid]) {
- high = mid - 1;
- } else
- return mid;
- }
-
- return low;
- }
- };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。