0
点赞
收藏
分享

微信扫一扫

C++&Python描述 LeetCode 704. 二分查找


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

提示:

  1. 你可以假设 ​​nums​​ 中的所有元素是不重复的。
  2. ​n​​​ 将在 ​​[1, 10000]​​之间。
  3. ​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


举报

相关推荐

0 条评论