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