Single Number II
来源:互联网 发布:黑镜为什么被禁 知乎 编辑:程序博客网 时间:2024/05/20 01:46
Single Number II
My SubmissionsGiven 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?
https://oj.leetcode.com/problems/single-number/
方法比较巧妙,利用了(a^a=0) 异或的计算性质,可以将出现两次的数都去掉,但是比较难想到,记住了,代码就很容易写。
Single Number II
可以用通用的解法,时间复杂度为O(n),空间复杂度为常数。
分析:利用一个整数的二进制表示,5表示成0101,3个5出现,则对应bit位出现3次1。 因此,我们可以定义一个数组来统计对应bit位出现的1的次数,如果该次数n%3==1,那就是只出现一次的值bit位上的1.
扩展:一组数中,除了x都出现4次,求x的值,可以用同样的方法统计。
代码:
class Solution {public: int singleNumber(int A[], int n) { if(A==NULL) return -1; int bit[32]={0};//用于统计所有数,对应二进制位上1的个数 int res=0; for(int i=0;i<32;i++){ for(int j=0;j<n;j++){ if((A[j] & (1<<i) ) ){ bit[i]++; } } bit[i]=bit[i]%3;//除去bit位中1 是3倍数的值 res += (bit[i])<<i;//res |= (bit[i])<<i } return res; }};
0 0
- Single Number & Single Number II
- Single Number & Single Number II
- Single Number II - leetcode
- Leetcode: Single Number II
- Single Number II
- Single Number II
- [LeetCode] Single Number II
- LeetCode: Single Number II
- leetcode -- Single Number II
- [leetcode]Single Number II
- [LeetCode] Single Number II
- 【leetcode】Single Number II
- Single Number I & II
- LeetCode:Single Number II
- Leetcode: Single Number II
- Single Number II
- leetcode :Single Number II
- Leetcode Single Number II
- C++Primer学习-命名空间
- mysql乐观锁总结和实践
- 找工作真难
- 欧拉函数模板
- 【畅言】加班是IT人一种必然的宿命么?
- Single Number II
- 骨骼动画_2
- xmlns是什么意思?
- 2014中国互联网安全大会
- Linux中的GPIO操作
- 今年空气污染好严重
- 良心工程,阳光装修新嘉泰,绵阳装饰,绵阳装修,绵阳设计
- Java 日志管理最佳实践
- 捡到100块你会交给警察吗