[LeetCode]题解(python):137-Single Number II
2024-08-26 16:30:09
题目来源:
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
最新文章
- html websocket
- Atom 安装 Packages 的笨办法
- Javascript原型模式总结梳理
- Build Slic3r on Windows // 如何在Windows上编译Slic3r
- Spring REST实践之REST基本介绍
- excel 导入功能
- PYTHON的CGIServer的进化
- Is the Information Reliable?(差分约束)
- 总线接口与计算机通信(五)CAN总线
- zoj2588 Burning Bridges --- 寻求尖端
- svn up 提示:Skipped &#39;.&#39;
- springMVC和json结合传递数据
- Mysql Explain 参数解释
- xml的作用
- Linux 安装 Mysql 5.7.23
- cxf动态调用外部web service 报告异常java.lang.NoSuchFieldError: QUALIFIED
- Prometheus 监控进程
- PAT甲级题解-1100. Mars Numbers (20)-字符串处理
- JavaWeb学习笔记1
- 【Java】得到当前股票信息