leetcode 二分查找·系统掌握 有序数组中的单一元素

题意:

题解:

一种可行的思路是,考虑这个单独的数加入之前和加入之后这个数组中其他元素的属性发生了什么变化,不难看出在这个单独的数之前每一对数的第一个索引为偶数,在这个单独的数之后每一对数的第一个索引为奇数,由此便可以使用一个泛型二分查找得出答案。

int singleNonDuplicate(vector<int>& nums) {
        int l=0,r=nums.size()-1,mid;
        while(l<r){
            mid=(l+r)>>1;
            if(nums[mid]!=nums[mid+1]&&nums[mid]!=nums[mid-1])return nums[mid];
            if(mid+1<nums.size()&&nums[mid]==nums[mid+1]){
                if(mid&1)r=mid-1;
                else l=mid+2;
            }
            else {
                if((mid-1)&1)r=mid-2;
                else l=mid+1;
            }
        }
        return nums[l];
    }

题后反思:

这道题其实是将每一对数或者那一个单独的数看作整体,所以 r 和 l 的更新方式就和以往的不同。

由此加上前面的二分题目可以看出,二分查找过程中 r 和 l 的更新情况是更具题目的具体情况而定的要结合具体的情景:多个数为整体,至少一次取出三个数等来正确地更新左右边界。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/752069.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RISC-V知识总结 —— 向量(扩展)指令集

资源1:晏明 - RISC-V向量扩展指令架构及LLVM自动向量化支持 - 202112118 - 第13届开源开发工具大会&#xff08;OSDTConf2021&#xff09;_哔哩哔哩_bilibili资源2:张先轶 - 基于RISC-V向量指令集优化基础计算软件生态【第12届开源开发工具大会&#xff08;OSDT2020&#xff09…

Fizz Buzz 经典问题 - 蓝桥杯

基础知识要求&#xff1a; Java&#xff1a;方法、if else语句、算术运算符、逻辑运算符、Scanner类 Python&#xff1a; 方法、if else语句、算术运算符、逻辑运算符、input() 题目&#xff1a; 思路解析&#xff1a; 读取输入&#xff1a; 从标准输入或其他方式读取一个整数…

高效利用iCloud指南:打造无缝连接的数字生活

iCloud是苹果公司推出的一项云存储和云计算服务&#xff0c;它为用户提供了一个安全、便捷的云端存储空间&#xff0c;帮助用户在各个苹果设备之间无缝同步数据。无论是照片、文档、备忘录&#xff0c;还是应用程序数据&#xff0c;iCloud都能让你的数字生活更加高效和有序。本…

CogMG:用大模型解决知识图谱覆盖不足的问题

CogMG&#xff1a;用大模型解决知识图谱覆盖不足的问题 提出背景知识图谱的作用知识覆盖不完整知识更新不对齐 显式分解知识三元组和补全检索增强生成&#xff08;RAG&#xff09;和知识更新 框架设计1. 查询知识图谱2. 处理结果3. 知识图谱演化 CogMG 实现3.1 模型和组件问题分…

智能测流速仪

LS300-B随着科技的不断进步&#xff0c;智能设备在各个领域中扮演着越来越重要的角色。在水利、环保、农业等行业中&#xff0c;明渠流速流量的测量一直是一个关键环节。传统的测量方法虽然有其有效性&#xff0c;但在面对复杂多变的测量环境时&#xff0c;往往显得力不从心。而…

[CAN] 通讯协议手动解析与手动打包 [手撕编码格式]

手动解析与手动打包 一、Intel格式编码1.1 报文解析。1.2 报文打包二、Motorola格式通讯协议2.1 报文解析。2.2 报文打包🙋 前言 CAN有两种编码格式:Intel编码格式 和 Motorola编码格式,本教程将分别对两种格式进行手动解析与手动打包。 一、Intel格式编码 假设已知雷达CAN…

如何在MySQL中按字符串中的数字排序

在管理数据库时&#xff0c;我们经常遇到需要按嵌入在字符串中的数字进行排序的情况。这在实际应用中尤为常见&#xff0c;比如文件名、代码版本号等字段中通常包含数字&#xff0c;而这些数字往往是排序的关键。本文将详细介绍如何在MySQL中利用正则表达式提取字符串中的数字并…

GPT-5的到来:智能飞跃与未来畅想

IT之家6月22日消息&#xff0c;在美国达特茅斯工程学院的采访中&#xff0c;OpenAI首席技术官米拉穆拉蒂确认了GPT-5的发布计划&#xff0c;预计将在一年半后推出。穆拉蒂形象地将GPT-4到GPT-5的飞跃比作高中生到博士生的成长。这一飞跃将给我们带来哪些变化&#xff1f;GPT-5的…

贪吃蛇项目GameStart部分:对游戏的初始化

接上一篇文章介绍完需要使用到的WIN32API的相关知识&#xff0c;本篇文章让我们来开始使用他们来创建我们的贪吃蛇欢迎界面以及游戏所需要的地图。 准备工作&#xff1a; 为了后面我们构建贪吃蛇游戏所需要的各项函数便于观察&#xff0c;同时便于我们的函数声明&#xff0c;在…

docker mysql cpu100% cpu打满排查 mysql cpu爆了 mysql cpu 100%问题排查

1. docker 启动了一个mysql 实例&#xff0c;近期忽然发现cpu100% 如下图所示 命令&#xff1a; top 2.进入容器内排查&#xff1a; docker exec mysql&#xff08;此处可以是docker ps -a 查找出来的image_id&#xff09; -it /bin/bash cd /var/log cat mysqld.log 容器内m…

移远通信发布两款Wi-Fi 6模组新品:率先采用亚马逊ACK SDK for Matter方案实现互联互通

6月26日 &#xff0c;在MWC上海展上&#xff0c;全球领先的物联网整体解决方案供应商移远通信联合亚马逊及上海博通现场宣布&#xff0c;推出支持亚马逊Alexa Connect Kit &#xff08;ACK&#xff09;SDK for Matter方案的MCU Wi-Fi 6模组FLM163D和FLM263D。 后续&#xff0c;…

完美解决ValueError: column index (256) not an int in range(256)的正确解决方法,亲测有效!!!

完美解决ValueError: column index (256) not an int in range(256)的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 亲测有效 完美解决ValueError: column index (256) not an int in range(256)的正确解决方法&#xff0c;亲测有效&#xff01;&…

JavaWeb——MySQL

目录 2. 数据库设计 3. 表的关系 4. 表关系的实现 5. 多表查询 5.1 内连接 &#xff08;1&#xff09;隐式内连接 &#xff08;2&#xff09;显式内连接 ​5.2 外连接 &#xff08;1&#xff09;左外连接 &#xff08;2&#xff09;右外连接 2. 数据库设计 数据库设…

「51媒体」政企活动媒体宣发如何做?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体宣传加速季&#xff0c;100万补贴享不停&#xff0c;一手媒体资源&#xff0c;全国100城线下落地执行。详情请联系胡老师。 政企活动媒体宣发是一个系统性的过程&#xff0c;需要明确…

World of Warcraft T2.5

World of Warcraft T2.5 猎人和术士套装需要的材料&#xff0c;好多啊&#xff0c;废墟和神殿打材料 猎人&#xff1a; 术士&#xff1a;

物联网安全:万物互联背景下的隐私保护与数据安全策略

在这个万物互联的时代&#xff0c;物联网&#xff08;IoT&#xff09;技术以其独特的魅力&#xff0c;将无数的设备、传感器和系统连接起来&#xff0c;构建了一个前所未有的智能世界。然而&#xff0c;随着物联网设备的激增和数据的爆炸式增长和流动&#xff0c;隐私泄露和数据…

Python | Leetcode Python题解之第188题买卖股票的最佳时机IV

题目&#xff1a; 题解&#xff1a; class Solution:def maxProfit(self, k: int, prices: List[int]) -> int:if not prices:return 0n len(prices)k min(k, n // 2)buy [0] * (k 1)sell [0] * (k 1)buy[0], sell[0] -prices[0], 0for i in range(1, k 1):buy[i] …

程序员职业发展指南,如何选择适合自己的就业方向?

随着科技的发展和数字化时代的到来&#xff0c;程序员是IT行业中的热门职业。尤其是近几年移动互联网的迅速发展&#xff0c;IT人才更是紧缺&#xff0c;越来越多的人加入程序员这个行列。 从事程序员工作&#xff0c;如何接项目呢&#xff1f;YesPMP是一个专注于互联网外包的平…

由监官要求下架docker hub镜像导致无法正常拉取镜像

问题&#xff1a;下载docker镜像超时 error pulling image configuration: download failed after attempts6: dial tcp 202.160.128.205:443: i/o timeout解决办法&#xff1a;配置daemon.json [rootbogon aihuidi]# cat /etc/docker/daemon.json {"registry-mirrors&qu…