当前位置: 首页 > news >正文

leetcode0704. 二分查找-easy

1 题目:二分查找

官方标定难度:易

给定一个 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]之间。

2 solution

本题直接用二分查找即可,先查区间的中间位置,根据中间值分为三种情况。
1 找到了,返回答案
2 找大了,继续从左边找
3 找小了,继续往右边找
每次都能缩小一半的区间。

二分法在各大语言中都是标准的基础算法,所以可以选择直接调用。

代码

class Solution {
public:
 int search(vector<int> &nums, int target) {
    auto it = lower_bound(nums.begin(), nums.end(), target);
    if (it == nums.end() || *it != target) return -1;
    return it - nums.begin();
}
};

结果

在这里插入图片描述

3 自己实现

代码

class Solution {
public:
 int search(vector<int> &nums, int target) {
    int l = 0, r = nums.size() - 1;
    while (l <= r){
        int mid = l + (r - l) / 2;
        if(target == nums[mid]) return mid;
        if(target > nums[mid]) l = mid + 1;
        else r = mid - 1;
    }
    return -1;
}
};

结果

在这里插入图片描述

相关文章:

  • 关于labview中路径的问题
  • 一款功能强大的手机使用情况监控工具
  • 探访 DINO 家族 Part 4:融合多模态大语言模型的视觉模型基础 RexSeek
  • 【计算机网络】记录一次校园网无法上网的解决方法
  • Android 地区选择器或者其他选择器
  • 【蓝桥杯14天冲刺课题单】Day 1
  • 指针函数、函数指针和指针函数指针的全面总结
  • MySQL表缺乏主键或唯一索引对主从复制的深度影响及解决方案
  • linux课程学习三——静态/动态库的创建
  • 使用无人机进行露天矿运输道路分析
  • js中三元表达式(条件运算符)的用法总结
  • VCP考试通过率低?
  • vs2022中使用spdlog、C++日志
  • 时序数据库 InfluxDB(五)
  • 文件分享系统--开源的可视化文件共享管理工具
  • LeetCode 438. 找到字符串中所有字母的异位词
  • 9、tlm 事务交互通信
  • 【11408学习记录】破译语言密码·征服数学迷宫——长难句拆解与方程不等式全析
  • RK3588使用笔记:系统算法依赖库安装
  • Linux信号——信号的产生(1)
  • 电子商务网站建设试卷及答案/网站建设制作流程
  • 常宁网站建设/搜索引擎优化排名技巧
  • 企业通用网站模板/百度托管公司
  • 科技企业网站建设/全网品牌推广公司
  • 什么是模板建站/seo实战培训费用
  • 诈骗网站怎么做的/策划方案网站