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相关推荐

  1. leetcode 260. Single Number III | 260. 只出现一次的数字 III(位运算:分组异或)

    题目 https://leetcode.com/problems/single-number-iii/ 题解:分组异或 参考1:讨论区题解 you know you can eliminate dou ...

  2. LeetCode 260. Single Number III

    转载请注明出处:http://www.cnblogs.com/liangyongrui/p/6354552.html 异或的妙用. 一开始读题不仔细,以为有很多的孤立数字. 没想到就两个- - 然后参 ...

  3. leetcode 算法解析(一):260. Single Number III(C++版本和自己的注解)

    这个题来自<剑指offer>但是书上上感觉讲解不太详细,还是看博客吧(我把下面博客改写成了C++版本运行通过) 注意这个题的相关代码中,输入的数组只能有两个数出现一次,如果有第三个数出现一 ...

  4. 【LeetCode】-- 260. Single Number III

    问题描述: https://leetcode.com/problems/single-number-iii/ 在一个数组里面,只有两个元素仅出现过1次,其余都出现过两次.找出出现仅一次的那两个(a, ...

  5. 260. Single Number III

    题目: Given an array of numbers nums, in which exactly two elements appear only once and all the other ...

  6. 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 ...

  7. 【异或】LeetCode 137. Single Number II

    LeetCode 137. Single Number II Solution1:不会做,抄的 博客转载自:http://www.cnblogs.com/grandyang/p/4263927.htm ...

  8. 【异或】LeetCode 136. Single Number

    LeetCode 136. Single Number Solution1:我的答案 还好异或的性质没记错,还好,还好 class Solution { public:int singleNumber ...

  9. [勇者闯LeetCode] 136. Single Number

    [勇者闯LeetCode] 136. Single Number Description Given an array of integers, every element appears twice ...

最新文章

  1. Leetcode题目:Range Sum Query - Immutable
  2. mastercam2017安装教程
  3. 阿里云服务器mysql莫名丢失_mysql数据库丢失
  4. 【今日CV 计算机视觉论文速览】Thu, 7 Mar 2019
  5. aspiration定义_志愿者的定义、理念与精神核心
  6. python把源代码打包成.exe文件
  7. Introduction to replication 翻译
  8. 从概率观点,怎样看新冠病毒的疫情
  9. 丁向荣单片机pdf_《单片机原理与应用 --基于可在线仿真的STC15F2K60S2单片机》 丁向荣、陈崇辉 【正版电子纸书阅读_PDF下载】- 书问...
  10. 洛谷P2141 珠心算测验
  11. 2022年10月24日程序员节日快乐
  12. Google Draco 源码解析
  13. windows 系统 工具栏 快速启动
  14. 解析李笑来新书《韭菜的自我修养》
  15. 马化腾对短视频志在必得?腾讯又双叒叕发布了一款短视频App
  16. python统计中英文字符个数-Python统计英文、中文、数字、空格等字符数
  17. (小脚本) (python) 批量修改文件后缀名
  18. 解决 Request Entity Too Large问题
  19. 【小强推歌】---法文歌曲下载
  20. java判断是否为long_java怎么判断是否是Long类型

热门文章

  1. 美联社:两家美国域名注册公司退出中国市场
  2. SCI论文编辑教你如何准备SCI论文和写作
  3. mysql seconds_behind_master_MySQL同步状态双Yes的假象及seconds_behind_master的含义
  4. mysql序列化字段反序列化_序列化serialize()与反序列化unserialize()的实例
  5. 系统在此应用程序中检测到基于堆栈的缓冲区_Linux 中的零拷贝技术
  6. python数据加载常规教程_Python加载数据的5种不同方式(收藏)
  7. 小红书笔记_小红书推广如何打造爆文笔记?
  8. Python多处理示例
  9. java spi_Java SPI(服务提供商接口)和ServiceLoader
  10. scala类的序列化_Scala序列理解,通用类和内部类示例