原題鏈接:
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; }