LeetCode-260 Single Number III
题目描述
Given an array of numbers nums
, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once.
题目大意
给定一个数组,该数组存在两个数字只出现了一次,其余的数字在该数组中出现了两次,找到数组中的两个只出现了一次的数字。
示例
E1
Input: [1,2,1,3,2,5] Output: [3,5]
解题思路
Solution1
用一个set类型保存访问过的数字,每访问到一个set中没有的数字则将其插入set中,若set中已经存在了该数字,则将set中的该数字删除。即最后set存在的两个数字即为结果。
Solution2
一个巧妙的方法,将所有数字异或一遍,即可得到两个出现一次数字的异或。再将得到的异或结果,除了最后一个非零位,其余非零位全部置零。最后遍历一遍数组中的数字,将数字分为两组,与该异或结果按位与是否为零进行分开,则分开后的所有数字做异或,最后可得到两个结果数字。
复杂度分析
时间复杂度:O(N\N)
空间复杂度:O(N\1)
代码1
class Solution { public:vector<int> singleNumber(vector<int>& nums) {set<int> visit;// 遍历一边数组for(int num : nums) {// 查找set中是否已有该数字auto iter = visit.find(num);// 若没有,则将其插入setif(iter == visit.end())visit.insert(num);// 否则,将其删除elsevisit.erase(iter);}vector<int> res;// 将set中剩余的两个数字放入结果数组for(auto iter = visit.begin(); iter != visit.end(); ++iter)res.push_back(*iter);return res;} };
代码2
class Solution { public:vector<int> singleNumber(vector<int>& nums) {// 将所有数字异或,返回得到的异或的结果int dif = accumulate(nums.begin(), nums.end(), 0, bit_xor<int>());// 只保留该异或结果的其中一个非零位,其余置零dif &= -dif;vector<int> res = {0, 0};// 遍历一边数组,将数组中的数字分类for(int num : nums) {// 若该数字与dif按位与不为零,则将其异或的结果保留在res[0]中if(num & dif)res[0] ^= num;// 否则,将其保留到res[1]中elseres[1] ^= num;}return res;} };
转载于:https://www.cnblogs.com/heyn1/p/11119255.html
LeetCode-260 Single Number III相关推荐
- 【?异或】LeetCode 260. Single Number III
LeetCode 260. Single Number III Solution1: 博客转载自:http://www.cnblogs.com/grandyang/p/4741122.html 这道题 ...
- leetcode 260. Single Number III | 260. 只出现一次的数字 III(位运算:分组异或)
题目 https://leetcode.com/problems/single-number-iii/ 题解:分组异或 参考1:讨论区题解 you know you can eliminate dou ...
- LeetCode 260. Single Number III
转载请注明出处:http://www.cnblogs.com/liangyongrui/p/6354552.html 异或的妙用. 一开始读题不仔细,以为有很多的孤立数字. 没想到就两个- - 然后参 ...
- leetcode 算法解析(一):260. Single Number III(C++版本和自己的注解)
这个题来自<剑指offer>但是书上上感觉讲解不太详细,还是看博客吧(我把下面博客改写成了C++版本运行通过) 注意这个题的相关代码中,输入的数组只能有两个数出现一次,如果有第三个数出现一 ...
- 【LeetCode】-- 260. Single Number III
问题描述: https://leetcode.com/problems/single-number-iii/ 在一个数组里面,只有两个元素仅出现过1次,其余都出现过两次.找出出现仅一次的那两个(a, ...
- 260. Single Number III
题目: Given an array of numbers nums, in which exactly two elements appear only once and all the other ...
- Leet Code OJ 260. Single Number III [Difficulty: Medium]
题目: Given an array of numbers nums, in which exactly two elements appear only once and all the other ...
- 【异或】LeetCode 137. Single Number II
LeetCode 137. Single Number II Solution1:不会做,抄的 博客转载自:http://www.cnblogs.com/grandyang/p/4263927.htm ...
- 【异或】LeetCode 136. Single Number
LeetCode 136. Single Number Solution1:我的答案 还好异或的性质没记错,还好,还好 class Solution { public:int singleNumber ...
- [勇者闯LeetCode] 136. Single Number
[勇者闯LeetCode] 136. Single Number Description Given an array of integers, every element appears twice ...
最新文章
- jQuery插件开发学习笔记
- codeforces 667A A. Pouring Rain(水题)
- 通信原理中的几个重要概念
- 巨蟒python全栈开发-第6天 is==
- [html] svg如何转为字体图标?
- 对比四大企业级linux版本_Linux家族族谱
- python变量类型声明_python变量声明及简单数据类型
- Glusterfs(distribute) + DRBD + heartbeat + mon 实现分布式文件系统1
- 电脑开机时光驱咔咔响_电脑机箱噪音大?看懂这篇内容,让你四步就能解决问题...
- gerber文件如何转为PCB文件
- 量表与问卷的区别比较
- java实现pdf文件的电子签字+盖章+二维码+水印+PDF文件加密的解决方案
- 用JBE修改Java字节码
- 群友转发了一段家庭矛盾的视频
- 计算机配置 主板,整套解决方案:I5-3470处理器和什么主板构成计算机配置?
- Mac平台第三方网站下载
- 深度学习水果识别系统-python
- python中遇到报错OSError: [Errno 22] Invalid argument的解决方法
- ArcBlock ⑦ 月报 | 产品一天半迭代1个版本 全球开发者社区建设启动
- Vivado关于综合(Synthesis)后存在Hold时序违例(Hold<0),但实现(Implementation)后无时序违例(hold>= 0)的问题
热门文章
- 网络丢包诊断与分析的现实与理想
- springboot thymeleaf模板使用
- POJ-2480 Longge's problem 欧拉函数
- SuperMap IS.NET保存地图之Ajax篇(转)
- 实现基于 ASP.NET Forms 身份验证的跨子域单点登录
- 问题 H: Search Problem (V)
- 基于S函数的BP神经网络PID控制器及simulink仿真
- 应力偏张量的物理意义_物理学中张量的由来
- python测控_基于RN8302和Python的电能测控系统设计
- pythonmatplotlib怎么设置曲线_python – Matplotlib的“symlog”选项:如何防止曲线“回来”?...