搜尋插入位置

2021-10-05 04:06:15 字數 865 閱讀 7711

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

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

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

標籤:二分查詢

如果該題目暴力解決的話需要 o(n) 的時間複雜度,但是如果二分的話則可以降低到 o(logn) 的時間複雜度

整體思路和普通的二分查詢幾乎沒有區別,先設定左側下標 left 和右側下標 right,再計算中間下標 mid

每次根據 nums[mid] 和 target 之間的大小進行判斷,相等則直接返回下標,nums[mid] < target 則 left 右移,nums[mid] > target 則 right 左移

查詢結束如果沒有相等值則返回 left,該值為插入位置

時間複雜度:o(logn)

二分查詢的思路不難理解,但是邊界條件容易出錯,比如 迴圈結束條件中 left 和 right 的關係,更新 left 和 right 位置時要不要加 1 減 1。

class

solution

else

if(nums[mid]

else

if(nums[mid]

>target)

}return left;

}}

搜尋插入位置

給定乙個排序陣列和乙個目標值,如果在陣列中找到目標值則返回索引。如果沒有,返回到它將會被按順序插入的位置。你可以假設在陣列中無重複元素。二分搜尋法 如果找不到該數,high是比該數小的那個數的下標,而low是比該數大的那個數的下標。public class solution param a an i...

搜尋插入位置

給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。你可以假設陣列中無重複元素。示例 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...

搜尋插入位置

給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。你可以假設陣列中無重複元素。示例 1 輸入 1,3,5,6 5 輸出 2 直接用二分法,注意left和right的更新方式,在while中只用返回mid,if else中更新lef...