[Leetcode] single number ii 找单个数
2017-07-18 10:10
316 查看
Given an array of integers, every element appears three times except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
题意:给定数组,除一个数仅出现一次外,其余都出现三次,找到仅出现一次的数字。
思路:这题不能延续single number的解法,但是思路可以向逻辑运算符那边靠。这题我开始没有想出来,这个逻辑运算对我而言是一个大坑。看了Grandyang的博客才明白。这里给出原博客中的解释:用3个整数来表示INT的各位的出现次数情况,one表示出现了1次,two表示出现了2次。当出现3次的时候该位清零。最后答案就是one的值,
ones 代表第ith 位只出现一次的掩码变量;twos 代表第ith 位只出现两次的掩码变量;threes 代表第ith 位只出现三次的掩码变量。
博主的个人理解经验是:写出一个例子,按照程序走一遍。
1 class Solution { 2 public: 3 int singleNumber(int A[], int n) 4 { 5 int one=0,two=0,three=0; 6 for(int i=0;i<n;++i) 7 { 8 two |=one&A[i]; 9 one ^=A[i]; 10 three=one&two; 11 one &=~three; 12 two &=~three; 13 } 14 return one; 15 } 16 };
原博客中还给出了Single Number III
相关文章推荐
- LeetCode | Single Number II(单个数字II)
- 【LeetCode-137】Single Number II
- LeetCode-Single NumberI II III
- 【LeetCode-面试算法经典-Java实现】【137-Single Number II(只字出一次的数字II)】
- LeetCode: Single Number II
- 寻找只出现一次的数字(LeetCode: Single Number II)
- Leetcode 137 Single Number II
- LeetCode Single Number I & II 都符合两个问题额外要求的 通用解法 与 思考过程
- leetCode: Single Number II [137]
- LeetCode刷题笔录Single Number II
- [LeetCode] Single Number II
- [Leetcode]Single Number I&II
- [leetcode] Single Number II
- LeetCode || Single Number II
- LeetCode - 137 - Single Number II
- Leetcode-SingleNumberII
- 【Leetcode】Single Number II
- [C++]LeetCode: 67 Single Number II
- LeetCode 137. Single Number II
- LeetCode之Single Number II