Lintcode 落单的数 II
2017-04-19 15:44
302 查看
给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字。
您在真实的面试中是否遇到过这个题?
Yes
样例
给出 [1,1,2,3,3,3,2,2,4,1] ,返回 4
挑战
一次遍历,常数级的额外空间复杂度
分析:
三个数相同,则我们将每一个数的二进制中对应位的1的个数都加起来放在数组numberofOne中,然后对数组每一个元素%3则得到单个数的二进制表示,然后求出该二进制的十进制返回函数即可。
如有问题请留言。
如有帮助请顶一个,你们的支持是我最大的动力。
文章均可以转载,但请注明文章链接,谢谢。
您在真实的面试中是否遇到过这个题?
Yes
样例
给出 [1,1,2,3,3,3,2,2,4,1] ,返回 4
挑战
一次遍历,常数级的额外空间复杂度
分析:
三个数相同,则我们将每一个数的二进制中对应位的1的个数都加起来放在数组numberofOne中,然后对数组每一个元素%3则得到单个数的二进制表示,然后求出该二进制的十进制返回函数即可。
class Solution { public: /** * @param A : An integer array * @return : An integer */ int singleNumberII(vector<int> &A) { // write your code here if(A.empty()) return 0; int n=A.size(); int singleNumber=0; const int size=33; int numberofOne[size]={0}; for(int i=0;i<32;i++){ for(int j=0;j<n;j++){ if(A[j]>>i&1) numberofOne[i]++; } numberofOne[i]%=3; singleNumber+=numberofOne[i]*pow(2,i); } return singleNumber; } };
如有问题请留言。
如有帮助请顶一个,你们的支持是我最大的动力。
文章均可以转载,但请注明文章链接,谢谢。
相关文章推荐
- ***[Lintcode]Single Number II 落单的数 II
- lintcode 落单的数 II
- lintcode-83-落单的数 II
- LintCode-落单的数 II
- lintcode 中等题:Singleton number II 落单的数 II
- lintcode,落单的数 II
- Lintcode落单的数 删除排序数组中的重复数字 II
- LintCode 落单的数 II
- 落单的数 II-LintCode
- LintCode-两数组的交 II
- [LintCode]k Sum II
- k数和 II-LintCode
- lintcode-113-删除排序链表中的重复数字 II
- [lintcode]108. 分割回文串 II
- [lintcode]36. 翻转链表 II
- 单词搜索 II-LintCode
- LintCode-硬币排成线 II
- [LintCode] Coins in a Line II
- [Lintcode]Maximum Subarray II 最大子数组 II
- Lintcode 二叉树的层次遍历 II