[LeetCode]Single Number II
2014-04-24 21:25
337 查看
题目:
Single Number II
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?
来源:http://oj.leetcode.com/problems/single-number-ii/
思路:
这里用了sort排序,其实有点不符合题目要求,因为sort时间为o(nlgn)。网上还有一种使用位运算的方法,不过真心有点难懂啊。。。难度系数真大啊C++ AC代码:
class Solution { public: int singleNumber(int A[], int n) { if(n<=0) return -1; if(n==1) return A[0]; sort(A, A + n); int j = 1; for(int i = 0; i < n - 1; i++) { if(A[i] == A[i+1]) j++; else { if(j<3) return A[i]; j = 1; } } return A[n-1]; } };
运行时间 84ms
使用位运算的解法:
class Solution { public: int singleNumber(int A[], int n) { int one = 0, two = 0, three = 0; for (int i = 0; i < n; ++i) { two |= one & A[i]; //出现两次的 就加到B里面 one ^= A[i]; //从A里面删除 出现两次的 three = one & two; //如果是三次的 就会同时出现在A和B里面, one &= ~three; //然后删除A里三次的 two &= ~three; //删除B里三次的 } return one; } };
相关文章推荐
- leetcode single number I II III [python]
- 【leetcode】【137】Single Number II
- *LeetCode-Single Number II
- leetcode_137题——Single Number II(位运算)
- leetcode - Single Number II
- Leetcode: Single Number II
- LeetCode解题报告 --- Single Number II
- Single Number II - LeetCode
- leetcode Single Number I II III
- [Leetcode]Single Number II
- 【Leetcode】:Single Number II问题 in Go语言
- LeetCode:Single Number II
- 【Leetcode】Single Number II
- leetcode — single-number-ii
- [LeetCode]Single Number II
- Leetcode Single Number II
- LeetCode之Single Number II
- LeetCode(137) Single Number II
- LeetCode Single Number I & II 都符合两个问题额外要求的 通用解法 与 思考过程
- Leetcode之SingleNumber I/II/III