【?异或】LeetCode 260. Single Number III
LeetCode 260. Single Number III
Solution1:
博客转载自:http://www.cnblogs.com/grandyang/p/4741122.html
这道题其实是很巧妙的利用了Single Number 单独的数字的解法,因为那道解法是可以准确的找出只出现了一次的数字,但前提是其他数字必须出现两次才行。而这题有两个数字都只出现了一次,那么我们如果能想办法把原数组分为两个小数组,不相同的两个数字分别在两个小数组中,这样分别调用Single Number 单独的数字的解法就可以得到答案。那么如何实现呢,首先我们先把原数组全部异或起来,那么我们会得到一个数字,这个数字是两个不相同的数字异或的结果,我们取出其中任意一位为‘1’的位,为了方便起见,我们用 a &= -a 来取出最右端为‘1’的位,然后和原数组中的数字挨个相与,那么我们要求的两个不同的数字就被分到了两个小组中,分别将两个小组中的数字都异或起来,就可以得到最终结果了,参见代码如下:
根据某一二进制位是否是1,把整数分成两组(不同的数字不同组)
之前在哪里见过相似的处理方法??
class Solution {
public:vector<int> singleNumber(vector<int>& nums) {#数组中的所有数的异或结果int diff = accumulate(nums.begin(), nums.end(), 0, bit_xor<int>());#负数的二进制是其绝对值二进制的反码加1得到的,一个正数和其相反数按位相交,会得到最右侧bit位1diff &= -diff;vector<int> res(2, 0);for (auto &a : nums) {if (a & diff) res[0] ^= a;else res[1] ^= a;}return res;}
};
【?异或】LeetCode 260. Single Number III相关推荐
- 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 ...
最新文章
- Leetcode题目:Range Sum Query - Immutable
- mastercam2017安装教程
- 阿里云服务器mysql莫名丢失_mysql数据库丢失
- 【今日CV 计算机视觉论文速览】Thu, 7 Mar 2019
- aspiration定义_志愿者的定义、理念与精神核心
- python把源代码打包成.exe文件
- Introduction to replication 翻译
- 从概率观点,怎样看新冠病毒的疫情
- 丁向荣单片机pdf_《单片机原理与应用 --基于可在线仿真的STC15F2K60S2单片机》 丁向荣、陈崇辉 【正版电子纸书阅读_PDF下载】- 书问...
- 洛谷P2141 珠心算测验
- 2022年10月24日程序员节日快乐
- Google Draco 源码解析
- windows 系统 工具栏 快速启动
- 解析李笑来新书《韭菜的自我修养》
- 马化腾对短视频志在必得?腾讯又双叒叕发布了一款短视频App
- python统计中英文字符个数-Python统计英文、中文、数字、空格等字符数
- (小脚本) (python) 批量修改文件后缀名
- 解决 Request Entity Too Large问题
- 【小强推歌】---法文歌曲下载
- java判断是否为long_java怎么判断是否是Long类型
热门文章
- 美联社:两家美国域名注册公司退出中国市场
- SCI论文编辑教你如何准备SCI论文和写作
- mysql seconds_behind_master_MySQL同步状态双Yes的假象及seconds_behind_master的含义
- mysql序列化字段反序列化_序列化serialize()与反序列化unserialize()的实例
- 系统在此应用程序中检测到基于堆栈的缓冲区_Linux 中的零拷贝技术
- python数据加载常规教程_Python加载数据的5种不同方式(收藏)
- 小红书笔记_小红书推广如何打造爆文笔记?
- Python多处理示例
- java spi_Java SPI(服务提供商接口)和ServiceLoader
- scala类的序列化_Scala序列理解,通用类和内部类示例