题解 | #农场牛的标识II#
农场牛的标识II
https://www.nowcoder.com/practice/a69dc54eeffa43218d06f62cc733c6c0
- 题目考察的知识点 : 分组异或位运算
- 题目解答方法的文字分析:
- 定义一个count数组,长度为32,用来统计每个位数上1的个数。
- 遍历nums,对每个数字num:对num进行右移位运算(>>),取得它在每个位上的0或1。与1按位与(&),判断该位是否为1,然后计数++。
- 遍历统计数组count,对每一位:将count[i]对3取余数,得到只出现一次的数字在该位上的0或1。将其左移位(<<),设置到结果result中。
- 返回result即为只出现一次的数字。
- 本题解析所用的编程语言:Python
- 完整且正确的编程代码
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param nums int整型一维数组 # @return int整型 # import ctypes class Solution: def singleNumberII(self, nums: List[int]) -> int: count = [0] * 32 for num in nums: for i in range(32): count[i] += (num >> i) & 1 result = 0 for i in range(32): result |= (count[i] % 3) << i if result > 2 ** 31-1: result -= 2 ** 32 return result
牛客高频top202题解系列 文章被收录于专栏
记录刷牛客高频202题的解法思路