题意:

  给一个数组,其中仅有两个元素是出现1次的,且其他元素均出现2次。求这两个特殊的元素?

思路:

  跟查找单个特殊的那道题是差不多的,只是这次出现了两个特殊的。将数组扫一遍求全部元素的异或和 x,结果也就是这两个特殊的元素的异或和了。现在必须找到两个当中的一个,才能恢复出另外一个。注意到x的二进制位中必定有1,那么只需要找到其中任意一个1对应的整数,再将数组中所有该位为1的计算他们的异或和a,a就是结果了,而另一个数b=x^a。

 vector<int> singleNumber(vector<int>& nums) {
int x=;
for(int i=; i<nums.size(); i++) x^=nums[i];
int lowbit=x-(x&(x-)), a=;
for(int i=; i<nums.size(); i++)
if( lowbit & nums[i] ) a^=nums[i];
return vector<int>{a,x^a};
}

AC代码

最新文章

  1. Xilinx SDK Problem Solution in Ubuntu
  2. Revit二次开发示例:ModelessForm_ExternalEvent
  3. Android——不同activity之间数据传递
  4. Objective-C :Category
  5. CANoe 入门 Step by step系列(二)CAPL编程【转】
  6. poj3164 (朱刘算法 最小树形图)
  7. iOS极光推送的基本使用
  8. [Android ADB] An auto-input method for Android and Windows
  9. QtQuick 中的 qml 与 Qt 的 C++
  10. open和opener使用說明
  11. Qt全局宏和变量
  12. 如何创建应用程序包(C ++)
  13. Java垃圾收集器概述
  14. WSDL文件
  15. 记录配置xshell显示中文乱码的一次巧合
  16. Solr5.5高级应用(基于tomcat9)
  17. redis安装,第一天
  18. webvirtmgr-重命名kvm虚拟机的名称
  19. pushpin Server-sent events &amp;&amp; openresty 集成试用
  20. 在Docker Swarm上部署Apache Storm:第2部分

热门文章

  1. 超级台阶 (NYOJ—76)
  2. http-server swagger-editor启动成功后,访问404的解决方法
  3. Other - 个人对知识讨论、分享等平台上抄袭乱象的看法
  4. 2019前端面试之html5
  5. Ansible Playbooks高级使用
  6. Mysql索引优化1
  7. UML——前两章
  8. 最大加权矩形 压缩+前缀和+dp
  9. linux限制内存和磁盘使用
  10. CBV 与 FBV