LeetCode704 二分查找

前言

题目: 704.二分查找
文档: 代码随想录------二分查找
编程语言: C++
解题状态: 解答错误,变量定义位置错误。

思路

有序数组的查找,最直接的思路应该就是二分查找。但是在查找的过程中要考虑到区间的边界问题,是左闭右开还是两边都闭。根据不同的情况来编写算法。注意,middle变量要放在while循环内来保证在每次循环时被有效更新。

代码

时间复杂度: O(log n)

cpp 复制代码
class Solution {
public:
    int search(vector<int>& nums, int target) {
        int left = 0;
        int right = nums.size() - 1;

        while (left <= right) {
            int middle = left + (right - left) / 2;
            
            if (target < nums[middle]) {
                right = middle - 1;
            } else if (target > nums[middle]) {
                left = middle + 1;
            } else {
                return middle;
            }
        }

        return -1;
    }
};
相关推荐
神仙别闹17 分钟前
基于 C++实现(控制台)车辆信息管理系统
开发语言·c++
fpcc21 分钟前
数据结构和算法—最短路径的算法
数据结构·算法
茉莉玫瑰花茶38 分钟前
RAG 数据检索
人工智能·算法·机器学习
重生之小比特44 分钟前
【初阶C++】string
开发语言·c++
Dream Cosmos1 小时前
C++继承详解(上):继承规则、父子类转换与作用域隐藏
c++
skr爱码士1 小时前
15_国际化和本地化:tr()、ts 文件、QM 文件、多语言切换
c++·qt·ui·客户端
speop1 小时前
hell-gpu| TASK01-2
linux·运维·算法
汉克老师1 小时前
CSP-J 初赛(以满分为目标):第二十一课 《树与二叉树基础—— 一棵树,为什么会成为计算机最重要的数据结构之一?》
c++·csp-j·小学生·学c++编程
别动我齐刘海2 小时前
从0到1独立搭建机器人软件系统
c++·人工智能·神经网络·opencv·目标检测·机器学习·机器人
dear_bi_MyOnly2 小时前
数组字符串深度解析:从入门到卡牌实战
开发语言·c++·学习