leetcode 35 搜尋插入位置 二分查詢

2021-10-01 18:56:27 字數 1140 閱讀 3322

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

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

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

演算法思路如下:

class

solution

else

if(target < nums[mid]

) end = mid -1;

}else

if(target > nums[mid]

) begin = mid +1;

}}return index;}}

;

基本思路是每次取中間值,如果等於目標即返回,否則根據大小關係切去一半,因此時間複雜度是o(lgn),空間複雜度是o(1)。這個題目的下面這種寫法,當迴圈停下來時,如果不是正好找到target,first指向的元素恰好大於target,last指向的元素恰好小於target。

非遞迴實現:

class

solution

else

if(nums[mid]

> target)

else

}return first;}}

;

遞迴實現:

class

solution

intbinarysearch

(vector<

int>

& nums,

int first,

int last,

int target)

//if(first <= last)

//else

if(nums[mid]

> target)

else

//}}

};

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,...