LintCode 落单的数 II
2016-10-15 15:43
281 查看
给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字。
解法:
位操作,统计所有数字各个位上数字的和,除以3取余就是落单数在这个位上的值
int singleNumberII(vector<int> &A) {
// write your code here
int buf[32] = {0};
for(int i = 0; i < A.size(); ++i) {
addBuf(A[i], buf);
}
int target = 0;
for(int i = 0; i < 32; ++i) {
int val = buf[i] % 3;
target = (val << i | target);
}
return target;
}
int addBuf(int num, int* buf) {
for(int i = 0; i < 32; ++i) {
buf[i] += (num >> i & 1);
}
}
解法:
位操作,统计所有数字各个位上数字的和,除以3取余就是落单数在这个位上的值
int singleNumberII(vector<int> &A) {
// write your code here
int buf[32] = {0};
for(int i = 0; i < A.size(); ++i) {
addBuf(A[i], buf);
}
int target = 0;
for(int i = 0; i < 32; ++i) {
int val = buf[i] % 3;
target = (val << i | target);
}
return target;
}
int addBuf(int num, int* buf) {
for(int i = 0; i < 32; ++i) {
buf[i] += (num >> i & 1);
}
}
相关文章推荐
- 落单的数 II-LintCode
- ***[Lintcode]Single Number II 落单的数 II
- lintcode 落单的数 II
- LintCode-落单的数 II
- lintcode-83-落单的数 II
- lintcode 中等题:Singleton number II 落单的数 II
- Lintcode 落单的数 II
- lintcode,落单的数 II
- Lintcode落单的数 删除排序数组中的重复数字 II
- Lintcode 389 Longest Increasing Continuous subsequence II
- *[Lintcode]Merge Sorted Array II
- lintcode(M)二叉树的层序遍历II
- lintcode-easy-Merge Sorted Array II
- LintCode:M-背包问题 II
- LintCode-搜索旋转排序数组 II
- lintcode:买卖股票的最佳时机 II
- 排列序号II-LintCode
- Lintcode—落单的数
- Unique Binary Search Trees II --lintcode
- LintCode_103_带环链表 II