Single Number III
来源:互联网 发布:js正则判断是否是数字 编辑:程序博客网 时间:2024/06/03 19:54
Single Number III:
做了Single Number I 还是不会做这道题。原来还是用异或运算提取了两个只出现一次的整数的信息,利用这个信息把数组分成两部分。
考虑位操作,对所有元素做异或操作,那么最后得到的值就是要求的两个元素异或得到的,那么找出其中为1的某一位,说明这一位两个数一个为0,一个为1,以这一位为标准,把数组的元素分为两组A、B,那么要求的两个元素肯定是一个在A组,一个在B组,而对这两组各自做异或操作,就可以得到要求结果。
这里面还有一个很巧妙的地方是,使用n&(~(n-1))可以取出元素的最后一个1的位置。
class Solution {public:vector<int> singleNumber(vector<int>& nums) {int ntmp = 0;for (int cnt = 0; cnt<nums.size(); cnt++){ntmp ^= nums[cnt];}int spec_bit = ntmp & (~(ntmp - 1));int a = 0, b = 0;for (int cnt = 0; cnt < nums.size(); cnt++) {if (spec_bit & nums[cnt])a ^= nums[cnt];elseb ^= nums[cnt];}return vector<int>({ a,b });}};
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
- 第一次上课
- 【8】机器学习之屠龙宝剑:GBDT
- laravel运行composer update时出现如下错误信息的解决方案
- 属性
- 用Eclipse和GDB构建ARM交叉编译和在线调试环境
- Single Number III
- mysql left join on 与 where 筛选的差异
- Linux上用udev自动识别并挂载U盘
- java设计模式之代理模式
- SwipeRefreshLayout在onCreate使用setRefreshing(true)无效
- Odoo 8项目管理Project Management使用图文介绍
- 冒泡排序
- 分布式中的一致性模型
- House Robber II 如何获得最大的钱系列2