LeetCode 搜尋插入的位置(二分查詢)

2021-09-10 14:42:06 字數 1074 閱讀 3259

給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。

你可以假設陣列中無重複元素。

示例 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 輸入...