C++&Python描述 LeetCode 704. 二分查找
大家好,我是亓官劼(qí guān jié ),在公衆号、GitHub、B站、華為開發者論壇等平台分享一些技術博文,全平台的id皆為:亓官劼(qí guān jié ),
除以上平台,其他的亓官劼id都不是本人,有不少網站在冒充,注意甄别
。
放棄不難,但堅持一定很酷!時光荏苒,未來可期,一起加油~
建了個小交流群,Q群:545611263,。近期對博文更新政策做了些調整,微信公衆号後期将用來更新一些總結性的文章(更新頻率将會很低),類似于刷題、一些bug解決等雜項記錄的blog就更新在、華為開發者論壇和GitHub上。
同時文章在GitHub中進行了開源,内含本系列文章目前已刷的各個題解和解題思路,GitHub位址為:LeetCode,如果文章對你有幫助的話可以來GitHub點個star,如果有更好的解題思路的話,也可以來GitHub送出~一起改進
題目
給定一個
n
個元素有序的(升序)整型數組
nums
和一個目标值
target
,寫一個函數搜尋
nums
中的
target
,如果目标值存在傳回下标,否則傳回
-1
。
示例 1:
輸入: nums = [-1,0,3,5,9,12], target = 9
輸出: 4
解釋: 9 出現在 nums 中并且下标為 4
示例 2:
輸入: nums = [-1,0,3,5,9,12], target = 2
輸出: -1
解釋: 2 不存在 nums 中是以傳回 -1
- 你可以假設
中的所有元素是不重複的。nums
-
将在 n
之間。[1, 10000]
-
的每個元素都将在 nums
之間。[-9999, 9999]
解題思路
C++實作
class Solution {
public:
int search(vector<int>& nums, int target) {
int l = 0, r = nums.size();
while(l <= r){
int mid = (l + r) >> 1;
if(nums[mid] == target) return mid;
if(nums[mid] > target){
r = mid - 1;
}else{
l = mid + 1;
}
}
return -1;
}
};
Python實作
class Solution:
def search(self, nums: List[int], target: int) -> int:
l, r = 0, nums.__len__()
while l < r:
mid = (l + r) >> 1
if nums[mid] == target: return mid
if nums[mid] > target: r = mid
else: l = mid + 1
return -1