【leetcode】137. 只出现一次的数字 II
题目
python3语言
代码1:
class Solution:
def singleNumber(self, nums: List[int]) -> int:
list1=nums.copy()
for i in nums:
list1.remove(i)
if i not in list1:
return i
list1.append(i)
代码1,运行如下:
代码2:
class Solution:
def singleNumber(self, nums: List[int]) -> int:
return (3 * sum(set(nums)) - sum(nums)) // 2
代码2,运行如下:
C++语言
class Solution {
public:
int singleNumber(vector<int>& nums) {
int ones = 0, twos = 0;
for (int x: nums) {
// 之前出现过两次的,这次再出现就是出现了三次
int threes = twos & x;
// 之前出现过两次,这次没出现,是出现了两次。
// 之前出现过一次的,这次再出现,也是出现了两次。
twos = (twos & ~x) | (ones & x);
// 统计记录出现了奇数次的,并从其中清除出现三次的。
// 这样ones里面始终只会记录出现了一次的。
ones = ones ^ x;
ones &= ~threes;
}
return ones;
}
};
运行如下: