LeetCode 540. 有序数组中的单一元素(位运算二分查找)

1. 题目

给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。

示例 1:
输入: [1,1,2,3,3,4,4,8,8]
输出: 2示例 2:
输入: [3,3,7,7,10,11,11]
输出: 10

注意: 您的方案应该在 O(log n) 时间复杂度 和 O(1)空间复杂度中运行。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/single-element-in-a-sorted-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

2.1 O(n) 位运算解法

  • 一个数与自己 异或^ 等0
  • 0^n = n
class Solution {
public:int singleNonDuplicate(vector<int>& nums) {int ans = 0;for(int i = 0; i < nums.size(); ++i)ans ^= nums[i];return ans;}
};

在这里插入图片描述

2.2 递归查找

最坏O(n)时间复杂度

class Solution {bool found = false;int ans;
public:int singleNonDuplicate(vector<int>& nums) {if(nums.size()==1)return nums[0];find(nums,0,nums.size()-1);return ans;}void find(vector<int>& nums, int l, int r){if(found || l > r)return;int mid = l+((r-l)>>1);if((mid == 0 && nums[mid] != nums[mid+1])|| (mid == nums.size()-1 && nums[mid-1] != nums[mid])){found = true;ans = nums[mid];}else if(nums[mid] != nums[mid+1] && nums[mid] != nums[mid-1]){found = true;ans = nums[mid];}else{find(nums,l,mid-1);find(nums,mid+1,r);}}
};

在这里插入图片描述

2.3 二分查找

看见题目要求的时间复杂度是 O(lg n),且有序,应该很容易想到二分法

  • 答案一定在切分的个数为奇数个的那一边
class Solution {
public:int singleNonDuplicate(vector<int>& nums) {int l = 0, r = nums.size()-1, mid;while(l < r) {mid = l+((r-l)>>1);if(mid % 2) //奇数,1,奇数{if(nums[mid] == nums[mid+1])r = mid-1;elsel = mid+1;} else // 偶数个,1,偶数个{if(nums[mid] == nums[mid+1])l = mid+2;elser = mid;}}return nums[l];}
};

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

迁移Prompt–解决Prompt Tuning三大问题!

文 | Harris刘鹏飞博士将近代NLP的研究划归为四种范式 [1] 并把预训练语言模型加持下的Prompt Learning看作是近代自然语言处理技术发展的“第四范式”。当我们使用新范式的方法的时候&#xff0c;能够意识到它带来的优异性可能是以某种“人力”牺牲为代价的。而如何让这种人力…

征文 | 2022年全国知识图谱与语义计算大会(CCKS 2022) 征稿通知

2022年全国知识图谱与语义计算大会征稿通知Call for Papers2022年8月25日-28日&#xff0c;秦皇岛征稿截止: 2022年5月22日第十六届全国知识图谱与语义计算大会&#xff08;CCKS: China Conference on Knowledge Graph and Semantic Computing&#xff09;由中国中文信息学会语…

Spring Cloud 和 Dubbo 哪个会被淘汰?

今天在知乎上看到了这样一个问题&#xff1a;Spring Cloud 和 Dubbo哪个会被淘汰&#xff1f;看了几个回答&#xff0c;都觉得不在点子上&#xff0c;所以要么就干脆写篇小文瞎逼叨一下。 简单说说个人观点 我认为这两个框架大概率会长期都存在。 时至今日&#xff0c;这两个…

DNN与推荐两大门派,一念神魔,功不唐捐

文 | 水哥源 | 知乎Saying1. embeddingDNN范式有两个流派&#xff0c;一个更关注DNN&#xff0c;叫逍遥派&#xff1b;一个更关注embedding&#xff0c;叫少林派2. embeddingDNN这种结构中&#xff0c;embedding一般是模型并行&#xff1b;DNN一般是数据并行3. 逍遥派能够创造奇…

会议交流—PPT下载|DataFunSummit2022:知识图谱在线峰会PPT合集!

点击上方公众号卡片&#xff0c;后台回复『20220312』&#xff0c;即可下载&#xff01;有哪些PPT&#xff1f;下载方式点击下方公众号卡片&#xff0c;后台回复『20220312』&#xff0c;即可下载&#xff01;OpenKGOpenKG&#xff08;中文开放知识图谱&#xff09;旨在推动以中…

Spring Cloud 2020年路线图发布,涵盖Spring Boot 2.3、2.4,Spring Cloud Ilford等重磅内容!

Spring Cloud 开发团队昨日公布了 Spring Cloud 2020 年的路线图&#xff0c;并对 Spring Cloud Greenwich 和 Hoxton 的生命周期进行了一些讲解。 Spring Cloud Ilford 开发团队称 Spring Cloud Ilford 将是下一个主要版本&#xff0c;这也将是自 Spring Cloud Finchley 发布…

LeetCode 398. 随机数索引(概率)

1. 题目 给定一个可能含有重复元素的整数数组&#xff0c;要求随机输出给定的数字的索引。 您可以假设给定的数字一定存在于数组中。 注意&#xff1a; 数组大小可能非常大。 使用太多额外空间的解决方案将不会通过测试。 示例: int[] nums new int[] {1,2,3,3,3}; Solutio…

再论推荐特征与embedding生成

文 | 水哥源 | 知乎Saying1. 工业特征处理和学术特征处理存在巨大差异&#xff0c;这里建议同学们一定认真阅读。这个差异可能引发未来各种方法落地的矛盾。2. full embedding在概念上和one-hot的操作等价&#xff0c;但在操作上省略了这个过程。3. hash是最省事的&#xff0c;…

图谱实战 | 李翔:美团到店综合知识图谱的构建与应用

转载公众号 | DataFunTalk分享嘉宾&#xff1a;李翔 美团 算法专家编辑整理&#xff1a;王惠灵 合肥工业大学出品平台&#xff1a;DataFunTalk导读&#xff1a;美团到店综合业务涵盖了本地生活中的休闲玩乐、丽人、亲子、结婚、宠物等多个行业。为了不断提升到店综合业务场景下…

Spring Cloud Hoxton正式发布,Spring Boot 2.2 不再孤单

距离Spring Boot 2.2.0的发布已经有一个半月左右时间&#xff0c;由于与之匹配的Spring Cloud版本一直没有Release&#xff0c;所以在这期间碰到不少读者咨询的问题都是由于Spring Boot和Spring Cloud版本不匹配导致。 很多时候&#xff0c;我们在学习或重建系统的时候都喜欢直…

加了元学习之后,少样本学习竟然可以变得这么简单!

文 | Rukawa_Y编 | Sheryc_王苏&#xff0c;小轶去年年初 GPT-3 的论文在 arxiv 上出现&#xff0c;论文名为 “Language Models are Few-Shot Learners”&#xff0c;引起一阵轰动。除了前无古人的模型规模外&#xff0c;最抓人眼球的是&#xff0c; GPT-3 能够不需要 fine-tu…

Spring Cloud Alibaba基础教程:与Dubbo的完美融合

很早以前&#xff0c;在刚开始搞Spring Cloud基础教程的时候&#xff0c;写过这样一篇文章&#xff1a;《微服务架构的基础框架选择&#xff1a;Spring Cloud还是Dubbo&#xff1f;》&#xff0c;可能不少读者也都看过。之后也就一直有关于这两个框架怎么选的问题出来&#xff…

DIN+DIEN,机器学习唯一指定涨点技Attention

文 | 水哥源 | 知乎Saying1. 如果你面对一个全新的机器学习任务&#xff0c;让你来涨点。你可能第一个想到的往往是attention&#xff0c;第一个实现的是attention&#xff0c;第一个真的涨点了的技术也是attention&#xff1b;2. DIN的最主要的意义&#xff0c;把attention引入…

RabbitMQ延迟消息的极限是多少?

之前在写Spring Cloud Stream专题内容的时候&#xff0c;特地介绍了一下如何使用RabbitMQ的延迟消息来实现定时任务。最近正好因为开发碰到了使用过程中发现&#xff0c;延迟消息没有效果&#xff0c;消息直接就被消费了的情况。因此就继续深入研究了一下问题原因&#xff0c;在…

推荐中的attention有什么作用?

文 | 水哥源 | 知乎Saying1. attention要解决两个问题&#xff1a;&#xff08;1&#xff09;attention怎么加&#xff0c;在哪个层面上做attention&#xff1b;&#xff08;2&#xff09;attention的系数怎么来&#xff0c;谁来得到attention2. Attention常见的本质原因是求和…

LeetCode 667. 优美的排列 II(找规律)

1. 题目 给定两个整数 n 和 k&#xff0c;你需要实现一个数组&#xff0c;这个数组包含从 1 到 n 的 n 个不同整数&#xff0c;同时满足以下条件&#xff1a; ① 如果这个数组是 [a1, a2, a3, ... , an] &#xff0c;那么数组 [|a1 - a2|, |a2 - a3|, |a3 - a4|, ... , |an-1…

图谱实战 | 医学知识图谱的价值与应用场景

转载公众号 | OMAHA联盟随着技术的进步和市场的逐渐成熟&#xff0c;人工智能在医疗等领域的应用日益广泛和深入。而知识图谱技术作为一种从海量文本和图像中抽取结构化知识的手段&#xff0c;正在成为推动人工智能发展的核心驱动力之一。◆ ◆ ◆知识图谱概述知识图谱是一种…

Spring Cloud Alibaba基础教程:Sentinel Dashboard中修改规则同步到Nacos

上一篇我们介绍了如何通过改造Sentinel Dashboard来实现修改规则之后自动同步到Apollo。下面通过这篇&#xff0c;详细介绍当使用Nacos作为配置中心之后&#xff0c;如何实现Sentinel Dashboard中修改规则同步到Nacos。关于下面改造的原理和分析可以见上一篇《Sentinel Dashboa…

OCR完整技术栈10天掌握!教程完全开源,更有产学研大佬们联合授课!

你日常会用到OCR&#xff08;光学字符识别&#xff09;技术吗&#xff1f;“妈妈再也不用担心我的学习了”、“老板来问进度了&#xff0c;文献还没整”... ...除了点读机广告&#xff0c;很多人对OCR的印象主要是肝文章的时候被OCR“救过命”&#xff0c;这项技术最早也是被用…

论文浅尝 - ACL2022 | 基于多语言语义解耦表示的跨语言迁移方法实现多语言阅读理解...

论文作者&#xff1a;吴林娟&#xff0c;天津大学&#xff0c;研究方向为自然语言理解论文链接&#xff1a;http://arxiv.org/abs/2204.00996代码地址&#xff1a;https://github.com/wulinjuan/SSDM_MRC摘要多语言预训练模型在机器阅读理解(Machine Reading Comprehension, MR…