Single Number III
来源:互联网 发布:老园丁淘宝店哪家正版 编辑:程序博客网 时间:2024/06/08 00:05
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.
For example:
Given nums = [1, 2, 1, 3, 2, 5]
, return [3, 5]
.
Note:
- The order of the result is not important. So in the above example,
[5, 3]
is also correct.
- Your algorithm should run in linear runtime complexity. Could you implement it using only constant space complexity
解题技巧:
该题与Single Number、Single NumberII相似,我们可以想办法将两个只出现过一次的数字分到两个不同的小组中,然后分别调用Single Number中的方法来得到结果。具体做法是:首先我们可以将所有的数进行异或运算,这将得到两个不同的数的异或结果,然后,用 x &= -x来取出数字a的最右端为1的位,之后,与原数组中的数进行与运算,将两个不同的数字分到不同的小组中,最后分别对两个小组中的数字进行异或运算,便可以得到最终结果
代码:
#include <iostream>#include <vector>using namespace std;int XOR(vector<int>& nums){int sum = 0, len = nums.size();for (int i = 0; i < len; i++){sum = sum ^ nums[i];}return sum;}vector<int> singleNumber(vector<int>& nums) {int diff;diff = XOR(nums);diff &= -diff;vector<int> res(2, 0);for (int i = 0; i < nums.size(); i++){if (diff & nums[i]) res[0] = res[0] ^ nums[i];else res[1] = res[1] ^ nums[i];}return res;}int main(){vector<int> nums, res;int x;while (cin >> x)nums.push_back(x);res = singleNumber(nums);for (int i = 0; i < res.size(); i++)cout << res[i] << endl;system("pause");}
阅读全文
0 0
- Single Number III
- Single Number III
- [LeetCode] Single Number III
- [leetcode] Single Number III
- 260 Single Number III
- [Leetcode]Single Number III
- [leetcode] Single Number III
- Leetcode: Single Number III
- 260 Single Number III
- LeetCode || Single Number III
- Single Number III
- Single Number III
- Single Number III
- [刷题]Single Number III
- Single Number III
- Leetcode75: Single Number III
- leetCode---Single Number III
- *LeetCode-Single Number III
- 六大设计原则
- Spring Boot 集成mybatis(gradle)
- android命名逻辑
- 使用一个小例子解释Java回调/代理机制
- springboot-数据校验、异常处理、单元测试、打包、日志
- Single Number III
- meteor 自动安装 [开启灯笼][官方安装包]
- springboot-模版
- Memory
- 【POJ3680】Intervals 最小费用最大流
- spring配置数据源问题
- fgm实例练习笔记-1.3函数接收参数并弹出
- 开源的第三方支付系统
- 开发过程常见问题整理