落单的数 III-LintCode
来源:互联网 发布:照片编辑美化软件 编辑:程序博客网 时间:2024/05/16 06:18
给出2*n + 2个的数字,除其中两个数字之外其他每个数字均出现两次,找到这两个数字。
样例:
给出 [1,2,2,3,4,4,5,3],返回 1和5
挑战:
O(n)时间复杂度,O(1)的额外空间复杂度
思路:
按照“落单的数”第一题的方法,我们可以轻松的到要求的两个数的异或值(Xor),关键在于如何把两个数字拆分出来。我们知道,在Xor中值为1的位,两个数在这个位置上,值是不同的。不妨早最小的位置k,可以把原数组划分为两类,k位置的值为1,与k位置的值为0。借鉴第一题的方法,将这两类数字分别与Xor异或,得到的两个数字即为所求。
#ifndef C84_H#define C84_H#include<iostream>#include<vector>using namespace std;class Solution {public: vector<int> singleNumberIII(vector<int> &A) { // write your code here int num=0,k=0; int num1=0, num2=0; vector<int> v; for (int i = 0; i < A.size(); ++i) { num ^= A[i]; } for (int i = 0; i < 32; ++i) { if (num&(1 << i)) { k = i; break; } } for (int i = 0; i < A.size(); ++i) { if (A[i] & (1 << k)) num1 ^= A[i]; else num2 ^= A[i]; } v.push_back(num1); v.push_back(num2); return v; }};#endif
阅读全文
0 0
- LintCode-落单的数 III
- LintCode:落单的数 III
- lintcode-落单的数 III
- 落单的数 III-LintCode
- lintcode -- 落单的数III
- lintCode-落单的数III
- lintcode-落单的数III-84
- Lintcode—落单的数III
- LintCode 84. 落单的数III
- [LintCode] 落单的数 III Single Number III
- 落单的数 III
- 落单的数 III
- 落单的数 III
- 落单的数III
- 落单的数 III
- lintcode ----落单的数
- LintCode 落单的数
- lintcode-落单的数
- freopen函数在竞赛中的使用
- springmvc前台get方式传值异常 Name for argument type not available
- Visual Studio:error MSB8020 (同时安装vs2012和vs2013)
- redis常用命令建议
- Annotation使用小结
- 落单的数 III-LintCode
- A. I'm bored with life
- 如何打包一个项目文件
- 人才缺口巨大_全球码农有多少
- MQ学习(五)--- 与spring整合(topic)
- [RK3288][Android6.0] WiFi之通过wpa_cli分析WPAS的连接过程
- python3学习之基础语法
- PAT (Advanced Level) Practise 1098 Insertion or Heap Sort (25)
- 面向对象去重问题