题目来源:

  https://leetcode.com/problems/single-number-ii/


题意分析:

  给定一个数组,数组里面每一个数字都出现了3次除了一个,找出那个数。要求时间复杂度O(n),空间复杂度O(1)。


题目思路:

  把所有的数转化成32位的2进制。那么如果没有只出现一次的那个数,每个位的1的个数都是3的倍数,那么我们将所有位置上的数量都对3取余数,那么剩下的就是那个数的32位组成。


代码(python):

class Solution(object):
def singleNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
b,ans,count = [0 for i in range(32)],0,0
i = 0
while i < 32:
for j in nums:
if j < 0:
count += 1
j = -j
if (j >> i)&1:
b[i] += 1
ans |= (b[i] % 3) << i
i += 1
if count % 3 != 0:
return -1*ans
return ans

最新文章

  1. html websocket
  2. Atom 安装 Packages 的笨办法
  3. Javascript原型模式总结梳理
  4. Build Slic3r on Windows // 如何在Windows上编译Slic3r
  5. Spring REST实践之REST基本介绍
  6. excel 导入功能
  7. PYTHON的CGIServer的进化
  8. Is the Information Reliable?(差分约束)
  9. 总线接口与计算机通信(五)CAN总线
  10. zoj2588 Burning Bridges --- 寻求尖端
  11. svn up 提示:Skipped &#39;.&#39;
  12. springMVC和json结合传递数据
  13. Mysql Explain 参数解释
  14. xml的作用
  15. Linux 安装 Mysql 5.7.23
  16. cxf动态调用外部web service 报告异常java.lang.NoSuchFieldError: QUALIFIED
  17. Prometheus 监控进程
  18. PAT甲级题解-1100. Mars Numbers (20)-字符串处理
  19. JavaWeb学习笔记1
  20. 【Java】得到当前股票信息

热门文章

  1. Maven 打包到Tomcat下
  2. Java Class类以及获取Class实例的三种方式
  3. [多线程同步练习]PV操作
  4. 如何使代码审查更高效【摘自InfoQ】
  5. 将以管理员方式运行cmd运行方式放到win7任务栏
  6. Android Spinner 下拉列表
  7. IE的事件与w3c事件的区别
  8. MVC自学第三课
  9. 十九、Android Activity初探
  10. 有哪些适合学生参与的 C++,网络编程方面的开源项目?