原题链接:
https://leetcode-cn.com/problems/search-insert-position
题目:
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 1:
输入: [1,3,5,6], 5 输出: 2
示例 2:
输入: [1,3,5,6], 2 输出: 1
示例 3:
输入: [1,3,5,6], 7 输出: 4
示例 4:
输入: [1,3,5,6], 0 输出: 0
思路:
由于数组已经有序,可以用二分法查找target值的位置,如果最后二分出的值大于或等于target值,返回 l 或 r 即可,否则则返回 l+1 或 r+1。
代码:
int searchInsert(int* nums, int numsSize, int target){ int l = 0, r = numsSize - 1; while(l < r) { int mid = l + r >> 1; if(nums[mid] >= target) r = mid; else l = mid + 1; } if(nums[l] >= target) return l; return l + 1; }