35 搜尋插入的位置

2021-10-09 23:53:25 字數 1101 閱讀 8131

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

可以採用分治策略(divide,conquer,combine),原問題劃分成規模更小的形式相同的子問題(遞迴情況),遞迴至足夠小規模(基本情況)求解子問題,子問題的解組合成原問題的解。

方法1:很直接

class

solution

return i;

}}

時間複雜度:o(n)

空間複雜度:o(1)

方法2:二分查詢

public

class

solution

if(nums[len -1]

< target)

int left =0;

int right = len -1;

while

(left < right)

else

}return left;

}}

時間複雜度:o(logn)

空間複雜度:o(1)

待修改

想把nums[middle]==target 情況拿出來,希望在不觸底的情況下得到結果以提高執行速度,但資料情況比較多 ,例如[1,3,5,6] 0不通過待修改。

class

solution

/* 在很少遞迴下找到相等直接return

究極情況下,由三元素規模遞迴到兩元素並且left==middle==right-1;

1)存在nums[middle]==target 直接return left 或者middle

或 (nums[middle]target)

return middle;

*/if(nums[middle]

==target)

return left;

else

if(nums[middle]

return middle+1;

else

return middle;

}}

35 搜尋插入位置

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

35 搜尋插入位置

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

35 搜尋插入位置

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