LeetCode 287. 寻找重复数(BitMap)

文章目录

    • 1. 题目信息
    • 2. 解题
      • 2.1 BitMap
      • 2.2 set去重
      • 2.3 官方解题,快慢指针

1. 题目信息

给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。

示例 1:输入: [1,3,4,2,2]
输出: 2
示例 2:输入: [3,1,3,4,2]
输出: 3
说明:不能更改原数组(假设数组是只读的)。
只能使用额外的 O(1) 的空间。
时间复杂度小于 O(n2) 。
数组中只有一个重复的数字,但它可能不止重复出现一次。

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

2. 解题

2.1 BitMap

参考位图BitMap思想解题。
在这里插入图片描述

class Solution {//bitmap solution
public:int findDuplicate(vector<int>& nums) {int idx, bit;int numOfBytes = (nums.size()-1)/8+1;char bytes[numOfBytes];memset(bytes,0,numOfBytes*sizeof(char));for(int i = 0; i < nums.size(); ++i){idx = nums[i]/8, bit = nums[i]%8;if(!(bytes[idx]&(1<<bit)))bytes[idx] |= (1<<bit);elsereturn nums[i];}return -1;}
};
  • 时间,空间复杂度均为O(n)

2.2 set去重

也可以用set集合来查重(set只能存储不重复的key)
在这里插入图片描述

class Solution {//set solution
public:int findDuplicate(vector<int>& nums) {set<int> s;for(int i = 0; i < nums.size(); ++i){if(s.find(nums[i]) == s.end())s.insert(nums[i]);elsereturn nums[i];}return -1;}
};

2.3 官方解题,快慢指针

在这里插入图片描述

class Solution {//O(1)复杂度
public:int findDuplicate(vector<int>& nums) {int fast = nums[0], slow = nums[0];do{fast = nums[nums[fast]];slow = nums[slow];}while(fast != slow);fast = nums[0];while(fast != slow){fast = nums[fast];slow = nums[slow];}return fast;}
};

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

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

相关文章

参加完阿里Java面试:一面+二面+三面+HR四面,后的复盘经验总结!

阿里中间件团队一面&#xff1a; 第一步先自我介绍? 介绍自己的项目经验和个人的擅长点&#xff0c;面试官主要考察你的表达能力和语言精简能力。 第二步&#xff1a;项目中做了什么&#xff0c;难点在哪里? 主要是想了解参与过技术难度最大的项目难点&#xff0c;技术难点…

IDEA解决Maven项目编译后classes文件中没有.xml或.properties问题

IDEA解决Maven项目编译后classes文件中没有.xml或.properties问题 方式一、在 pom.xml 中添加下面的代码 <build><!--解决Maven项目编译后classes文件中没有.xml问题--><resources><resource><directory>src/main/java</directory><in…

NLP太卷,我去研究蛋白质了~

为什么“单词”被省略了&#xff1a;单词的本质是含义简单且可以高频重复的信息&#xff0c;句子的本质是经过多个单词不断消歧最终包含指向性含义的信息。从基因角度来看&#xff0c;大的片段相当于句子&#xff0c;对这些片段再分段起单词作用&#xff0c;密码子&#xff08;…

论文浅尝 | 利用关系标签的主题语义知识为关系抽取提供监督 (IJCAI 2019)

本文转载自公众号&#xff1a;知识工场。作者&#xff1a;蒋海云&#xff0c;复旦大学2016级计算机博士生&#xff0c;研究方向为知识图谱与自然语言处理。目前已在 IJCAI&#xff0c;AAAI&#xff0c;ACL&#xff0c;DASFAA等会议上发表文章。IJCAI 2019&#xff08;The 28th …

LeetCode 268. 缺失数字

文章目录1. 题目信息2. 解题1. 题目信息 给定一个包含 0, 1, 2, …, n 中 n 个数的序列&#xff0c;找出 0 … n 中没有出现在序列中的那个数。 示例 1:输入: [3,0,1] 输出: 2 示例 2:输入: [9,6,4,2,3,5,7,0,1] 输出: 8 说明: 你的算法应具有线性时间复杂度。你能否仅使用额…

一位前BAT面试官详谈进入BAT面试经验

“ 之前有一篇文章“最强攻略&#xff1a;java程序员如何通过阿里、百度社招面试”谈到了进入BAT需要掌握的技术知识点,关注优知学院可以获得。很多同学看完后&#xff0c;一直在说能否与面试一起结合谈谈这方面的经验。所以&#xff0c;补充了本篇文章。 希望能使大家在未来少…

使用numpy实现神经网络模块

class Network(object):def __init__(self, num_of_weights):# 随机产生w的初始值# 为了保持程序每次运行结果的一致性&#xff0c;此处设置固定的随机数种子np.random.seed(0)self.w np.random.randn(num_of_weights, 1)self.b 0.def forward(self, x):z np.dot(x, self.w)…

一句话超短摘要,速览752篇EMNLP论文

文 | Posy阿花今年的EMNLP今天开始召开啦&#xff0c;不知道大家的论文列表都刷完没有呀~ 什么&#xff1f;论文太多&#xff0c;看不过来&#xff0c;怎么办&#xff1f;看了论文题目还是不知道讲的是什么&#xff0c;怎么办&#xff1f;别担心&#xff0c;今天阿花给大家带来…

LeetCode 136. 只出现一次的数字(异或^)

文章目录1. 题目信息2. 解题1. 题目信息 给定一个非空整数数组&#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 说明&#xff1a;你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗&#xff1f;示例…

阿里蚂蚁金服中间件(Java 4轮面试题含答案):Redis缓存+线程锁+微服务等

第一轮 说说HaspMap底层原理&#xff1f;再说说它跟HaspTable和ConcurrentHashMap他们之间的相同点和不同点&#xff1f; 讲讲jdk1.7和1.8的区别&#xff1f; 几种内置的线程池 MySQL事务隔离级别以及MVCC机制 Redis缓存雪崩、缓存穿透以及如何解决&#xff1f; 分布式架构…

简述python setup.py install的过程

原文连接&#xff1a;https://www.jianshu.com/p/f8ffbf18c312 简述python setup.py install的过程0.4872018.06.27 18:24:01字数 372阅读 31,948python setup.py install 是我们用来安装下载的python包或者自己按照python官方规范开发的扩展包的常用指令。通过这个命令&#x…

IDEA:将web工程部署到tomcat

在项目结构中进行部署即可&#xff1a;

NeurIPS 2020 所有RL papers全扫荡

文 | 微尘-黄含驰源 | 知乎论文列表1.《Breaking the Sample Size Barrier in Model-Based Reinforcement Learning with a Generative Model》关键词&#xff1a;model-based reinforcement learning, minimaxity, planning, policy evaluation, instance-dependent guarantee…

java架构师进阶独孤九剑系列(一):数据结构与算法

“ 架构师进阶系列之独孤九剑&#xff0c;这套秘籍如果你能完整学会&#xff0c;年薪至少60万起&#xff0c;今天是架构师进阶连载开启篇。 Java程序员成长为架构师进阶步骤 未来我会用1-2个月在实战为大家讲解架构师的九大必备技能。 架构师进阶系列之独孤九剑九大步骤&…

【社招/实习】百度大搜索招聘NLP、搜索方向算法工程师!

星标/置顶小屋&#xff0c;带你解锁最萌最前沿的NLP、搜索与推荐技术工作职责负责百度搜索中的语义理解及相关性计算、LTR排序逻辑、query分析理解、召回匹配等相关算法创新及优化工作&#xff1b;关注传统机器学习与数据挖掘、深度学习、强化学习等方向的前沿技术&#xff0c;…

最全Java面试180题:阿里11面试+网易+百度+美团!含答案大赠送!

网络编程 ISO模型与协议 http1.0&#xff1a;需要使用keep-alive参数来告知服务器端要建立一个长连接 http1.1&#xff1a;默认长连接。支持只发送header信息&#xff0c;可以用作权限请求。支持Host域。 http2.0&#xff1a;多路复用的技术&#xff0c;做到同一个连接并发处…

Redis持久化(RDB 和 AOF)

一、RDB持久化 RDB&#xff08;Redis DataBase&#xff09;&#xff1a; 配置文件中对其的相关配置&#xff1a; 触发机制&#xff1a; 恢复rdb文件&#xff1a; 优点&#xff1a; 缺点&#xff1a; 二、AOF持久化 AOF&#xff08;Append Only File&#xff09;&#x…

LeetCode 78. 子集(回溯)

文章目录1. 题目信息2. 解题2.1 暴力回溯2.2 循环2.3 位运算1. 题目信息 给定一组不含重复元素的整数数组 nums&#xff0c;返回该数组所有可能的子集&#xff08;幂集&#xff09;。 说明&#xff1a;解集不能包含重复的子集。 示例:输入: nums [1,2,3] 输出: [[3],[1],[2…

EMNLP'20最佳论文揭晓!八块肌肉=能打电话?!

文 | 小轶(y)背景今天上午十点刚刚颁布的EMNLP 2020最佳论文&#xff0c;获奖者是来自UCBerkeley团队的这篇Digital Voicing of Silent Speech。刷了那么多NLP论文&#xff0c;各种pretraining、BERT、XXX-former...是不是都快刷出审美疲劳了&#xff1f;今年的EMNLP best pape…