搜尋插入位置

2022-09-20 14:06:13 字數 1085 閱讀 7306

leetcode

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

請必須使用時間複雜度為 o(log n) 的演算法。

示例 1:

輸入: nums = [1,3,5,6], target = 5

輸出: 2

示例 2:

輸入: nums = [1,3,5,6], target = 2

輸出: 1

示例 3:

輸入: nums = [1,3,5,6], target = 7

輸出: 4

示例 4:

輸入: nums = [1,3,5,6], target = 0

輸出: 0

示例 5:

輸入: nums = [1], target = 0

輸出: 0

​ nums[pos−1] < target ≤ nums[pos]

如果存在這個目標值,我們返回的索引也是 pos,因此我們可以將兩個條件合併得出最後的目標:「在乙個有序陣列中找第乙個大於等於 target 的下標」。

問題轉化到這裡,直接套用二分法即可,即不斷用二分法逼近查詢第乙個大於等於 target 的下標 。n 初值設定為陣列長度可以省略邊界條件的判斷,因為存在一種情況是target 大於陣列中的所有數,此時需要插入到陣列長度的位置。

public static int searchinsert(int nums, int target) else 

}return n;

}

搜尋插入位置

給定乙個排序陣列和乙個目標值,如果在陣列中找到目標值則返回索引。如果沒有,返回到它將會被按順序插入的位置。你可以假設在陣列中無重複元素。二分搜尋法 如果找不到該數,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...