給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。
你可以假設陣列中無重複元素。
示例 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
思路分析:第一反應當然是想到用二分查詢法,但是此題如果是容器中不含這個元素,二分法就有些無能為力。但是我覺得二分法的精髓在於區間的縮小,當我們改變它的趨近速度,在未找到時,使它推出的時候左區間下標和右區間下標相同。**如下
int
searchinsert
(vector<
int>
& nums,
int target)
int begin =0;
//起始下標
int end = numssize -1;
//終止下標
while
(begin <= end)
else
if(begin == end)
else
if(nums[mid]
< target)
else
}//上面的while退出時,必定是begin==end,或者找到了targe直接返回了
if(nums[begin]
> target)
else
}
假設nums容器中沒有target,那麼最後必定會出現begin與end相鄰的情況,此時mid= (begin + end),計算後mid仍然為begin,接著必定會選擇②或者③中的其中一步進行下一步的縮減。不管選擇哪乙個都是將begin = = end。 搜尋插入位置 LeetCode
給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。你可以假設陣列中無重複元素。示例 1 輸入 1,3,5,6 5 輸出 2 示例 2 輸入 1,3,5,6 2 輸出 1 示例 3 輸入 1,3,5,6 7 輸出 4 示例 4 輸入...
leetcode 搜尋插入位置
給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。你可以假設陣列中無重複元素。示例 1 輸入 1,3,5,6 5 輸出 2 示例 2 輸入 1,3,5,6 2 輸出 1 示例 3 輸入 1,3,5,6 7 輸出 4 示例 4 輸入...
leetcode 搜尋插入位置
給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。你可以假設陣列中無重複元素。示例 1 輸入 1,3,5,6 5 輸出 2 示例 2 輸入 1,3,5,6 2 輸出 1 示例 3 輸入 1,3,5,6 7 輸出 4 示例 4 輸入...