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
题意:给定一个排序好的数组,寻找target位置,若找不到则返回target目标应该放的位置;
思路:
1.二分查找法,若找到返回下标,若找不到也是返回该放的下标;
2.巧妙利用已经排好序的,target该插的位置肯定是小于或等于后一个数;
1.代码实现如下:
class Solution { public int searchInsert(int[] nums, int target) { int low = 0; int high = nums.length-1; int mid; while(low<=high){ mid = (low+high)/2; if(nums[mid]==target){ return mid; }else if(nums[mid]>target){ high = mid-1; }else{ low = mid+1; } } return low; } }
2.代码实现如下:
int searchInsert(int* nums, int numsSize, int target) { int i; for(i = 0;i<numsSize;i++){ if(target<=nums[i]){ return i; } } return numsSize; }