【一天一道LeetCode】#137. Single Number II
2016-07-17 20:17
393 查看
一天一道LeetCode
(一)题目
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),不用任何额外的空间。
统计数组中每个数在第i(0<=i<=32)位上为1的个数sum,如果sum能被3整除,那么就表明这一位上的数出现了三次;如果不能被3整除,就表示这一位上有只出现一次的数。
具体思路见代码:
class Solution { public: int singleNumber(vector<int>& nums) { int size = nums.size(); int ret = 0; for(int i = 0 ; i < 32 ; i++) { int bit = 1<<i; int count = 0 ; for(int j = 0 ; j < size ; j++) { if((nums[j]&bit)==bit) count++; } if(count%3==1) ret+=bit; } return ret; } };
相关文章推荐
- 【一天一道LeetCode】#137. Single Number II
- <mvn:default-servlet-handler/>标签作用
- poj 2676
- 算法竞赛入门经典2.5 2-4子序列的和
- 【一天一道LeetCode】#136. Single Number
- 【一天一道LeetCode】#136. Single Number
- js设计模式总结5
- poj 3061 技巧
- pentaho report-designer 报表中添加相应的超链接及传参
- 神州优车挂牌新三板!专车B2C对决C2C将愈发狂暴?
- ZF_20160717
- killed
- 猿思想
- Linq修改Web.config的连接字符串
- 二、android.support.v7.app.ActionBarActivity is deprecated; use AppCompatActivity instead
- Scala vs. Groovy vs. Clojure
- App下载更新、数据库断点续传、通知栏更新下载进度、Https传服务器Json并且解析对象
- 用Delphi实现文件下载的几种方法
- 广播的最佳实践-实现强制下线功能
- 自我介绍及决心书