落单的数 II-LintCode
来源:互联网 发布:淘宝图片怎么ps 编辑:程序博客网 时间:2024/04/28 12:01
给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字。
样例:
给出 [1,1,2,3,3,3,2,2,4,1] ,返回 4
挑战 :
一次遍历,常数级的额外空间复杂度
思想:
利用位运算,若一个数字出现3次,则该数字的二进制表示中每个位置数值为1出现的次数均为3次。用one表示出现一次,two表示出现两次,three表示出现三次。出现两次即为one中出现一次,之后A[i]中又出现;出现一次,则不能在A[i]再出现,要用异或;three为one中出现一次,two中出现两次;之后将one和two中出现三次的位置均清空(置零)。
#ifndef C83_H#define C83_H#include<iostream>#include<vector>using namespace std;class Solution {public: int singleNumberII(vector<int> &A) { int one = 0; int two = 0; int three = 0; for (int i = 0; i < A.size(); ++i) { two |= one&A[i]; one ^= A[i]; three = one&two; one = one&~three; two = two&~three; } return one; }};#endif
阅读全文
0 0
- LintCode-落单的数 II
- lintcode-落单的数 II
- LintCode 落单的数 II
- lintcode,落单的数 II
- Lintcode 落单的数 II
- 落单的数 II-LintCode
- lintcode 落单的数 II
- lintcode-落单的数II-83
- Lintcode—落单的数II
- LintCode:M-落单的数II
- LintCode 83. 落单的数II
- lintcode ----落单的数
- LintCode 落单的数
- lintcode-落单的数
- lintcode,落单的数
- lintcode->落单的数
- LintCode :落单的数
- 落单的数-LintCode
- Android开发入门——推箱子游戏开发实战(十五,终结)
- linux调试----addr2line
- poj2318 TOYS 算法简介和C语言实现
- python爬虫-->下载缓存
- 【工具类】Java实现AES算法 加密和解密
- 落单的数 II-LintCode
- Spring JDBC入门
- Linux 命令之软硬连接的创建-ln
- java nio 新的四种文件传输 直接缓冲与非直接缓冲 速度对比
- 开源实时日志分析ELK平台部署
- 卷积神经网络学习--激活函数
- 1、Eureka实现服务注册与发现
- 算法题目---重建二叉树
- 打印数组所有元素