LeetCode 35 搜尋插入位置

2021-09-28 22:23:39 字數 1417 閱讀 8975

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

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

示例 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

官方解釋說 可以用二分法,這個還沒學會,明天準備看一下,然後來更一下部落格

我這是暴力解法,就是判斷陣列裡的值和要找的目標值是不是相等,相等的話就返回i,當大於的時候,就插在前面的那個位置上,這時候也是i,兩種情況合併 都是i

最後需要return nums.length 是因為方法函式裡面定義了要返回乙個整形,如果不返回的話就要報錯。

public

intsearchinsert

(int

nums,

int target)

}return nums.length;

}

-------------------------我來啦我來啦 ---------------~~~~ —

-------------------------我來更博啦 哈哈哈---------------------------~~~~

之前對於插入搜尋位置採用的是暴力解法

看了題解之後,發現這是個很經典的可以用二分法解決的問題

原因呢~~~~是因為題目說了這是個有序陣列

請教了大佬,說看到有序,就是在瘋狂俺是你要用二分法來解決問題

那麼靜靜的,我來啦

對於二分,有個非常好的模版和學習的總結,鏈結放在下面了,需要的小夥伴點

對於上面的搜尋插入位置,用二分法解決的思想是:

可設定left=0;right=len;

mid= (le ft + right)/2

設定的迴圈條件就是 left < right

顯然,中間的值等於要找的target 是最簡單的情況,可以寫在第乙個分支

如果中間值小於target,那麼那麼就要往右邊找,目前所在的位置是不可能是我們要找的結果的,所以要+1,left=mid+1

剩下的就是中間值大於target,那麼就要往左邊找,但是這個時候還是有可能能取到的,不用加+1,剩下的就是right=mid

至於最後返回的結果,right和left都無所謂的,因為限制條件是left至於我解決的**,放在下面

class

solution

else

if(nums[mid]

< target)

else

}return left;

}}

LeetCode 35 搜尋插入位置

35 搜尋插入位置 給定乙個排序陣列和乙個目標值,如果在陣列中找到目標值則返回索引。如果沒有,返回到它將會被按順序插入的位置。你可以假設在陣列中無重複元素。案例 1 輸入 1,3,5,6 5 輸出 2 案例 2 輸入 1,3,5,6 2 輸出 1 案例 3 輸入 1,3,5,6 7 輸出 4 案例 ...

LeetCode 35 搜尋插入位置

題目描述 給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。示例 示例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 輸出...

leetcode 35 搜尋插入位置

題目 給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。你可以假設陣列中無重複元素。示例 1 輸入 1,3,5,6 5輸出 2示例 2 輸入 1,3,5,6 2輸出 1示例 3 輸入 1,3,5,6 7輸出 4示例 4 輸入 1,...