使用异或解题 —— 序列中仅出现一次的两个数
来源:互联网 发布:淘宝代运营保销售 编辑:程序博客网 时间:2024/05/21 09:51
异或算法在算法求解中的妙用
(经典的异或技巧)数组中只出现一次的数字 (两种方法)
如果一个序列除了某个数出现一次(奇数次)外,其他数均出现两次(偶数次),最终全部异或的结果会是这个出现一次(奇数次)的数;
如果一个序列所有的数均出现两次(偶数次),最终全部异或的结果会是 0;
如果一个序列除了某 2 个数出现一次(奇数次)外,其他数均出现两次(偶数次),最终全部异或的结果一定不为 0;
class Solution{public: void FindNumsAppearOdds(vector<int> nums, int *num1, int *num2){ if (nums.size() < 2) return; int myxor = accumulate(nums.begin(), nums.end(), 0, [](int x, int y) { return x^y; }); int flag = 1; while ((myxor & flag) == 0) flag <<= 1; *num1 = myxor; *num2 = myxor; for (int i = 0; i < nums.size(); ++i) if (flag & nums[i]) *num1 ^= nums[i]; else *num2 ^= nums[i]; }}
0 0
- 使用异或解题 —— 序列中仅出现一次的两个数
- 260. Single Number III (找到数组中仅出现一次的两个数)
- 数组中只出现一次的两个数(异或)
- 百度面试题之找出数组中之出现一次的两个数(异或的巧妙应用)
- Single Number III 两个不同的数出现一次,其余两次,异或
- 解题笔记(24)——找出数组中两个只出现一次的数字(数组)
- 找出数组中两个只出现一次的数
- 求一个数组中只出现一次的两个数
- 数组中只出现一次的两个数
- 题目:找数组中出现一次的两个数
- 求数组中只出现一次的两个数
- 找出数组中两个只出现了一次的数
- 数组------找出数组中只出现一次的两个数
- 找出数组中只出现一次的两个数
- 找出一个数组中只出现一次的两个数
- 找出数组中两个只出现一次的数字;异或运算^的一个作用
- 找出数组中两个只出现一次的数字--分组异或
- 用异或求一堆数中只出现过一次的两个数(广东工业大学新生赛H题)
- 机器视觉-GIST特征描述符使用
- H3C配置ssh密码认证登录
- 放弃中国国籍 却赚着中国人的钱
- Butterknife原理
- 事件分发
- 使用异或解题 —— 序列中仅出现一次的两个数
- nginx基本配置
- C++STL:sort/qsort
- MongoDB日期类型
- (二)openwrt make kernel_menuconfig流程分析
- js作用域和作用于链
- Android ButterKnife
- VF02 会计凭证过账时间
- C++ 四种类型转换的关键字及其特点