137. Single Number II
来源:互联网 发布:生活网络信托基金产品 编辑:程序博客网 时间:2024/06/15 05:17
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?
第一种方法:使用哈希表,但是空间复杂度是O(N)
class Solution {public: int singleNumber(vector<int>& nums) { unordered_map<int,int>count; for(int i=0;i<nums.size();i++) count[nums[i]]++; for(auto it=count.begin();it!=count.end();it++) if(it->second==1) return it->first; return 0; }};
第二种方法:使用位操作,计算int32位每位1的个数,它们的个数不是3N就是3N+1,当计数为3N+1时,说明单独的那个数这一位为1。这样就可以拼凑出那个单独的数。
class Solution {public: int singleNumber(vector<int>& nums) { //int length=nums.size(); int result=0; for(int i=0;i<32;i++) { int count=0; int mask=1<<i; for(int j=0;j<nums.size();j++) { if(mask&nums[j]) count++; } if(count%3==1) result=result|mask; } return result; return 0; }};
0 0
- 137.Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- 137. Single Number II
- Linux_软件概述
- Linux_RPM的安装卸载
- Android_退出程序
- Android_StricMode
- Android_Socket
- 137. Single Number II
- Linux_RPM的查询
- Linux_RPM校验
- Linux_yum安装
- Linux_yum常用命令
- 数据结构——非递归中序遍历树
- 启发式搜索 - 有趣而神奇的 A* 算法
- Android_系统内部控件
- Android_电池电量