【leetcode】137. 只出现一次的数字 II

拼搏现实的明天。 2022-11-06 08:55 245阅读 0赞

【leetcode】137. 只出现一次的数字 II

  • 题目
  • python3语言
  • C++语言

题目

在这里插入图片描述

python3语言

代码1:

  1. class Solution:
  2. def singleNumber(self, nums: List[int]) -> int:
  3. list1=nums.copy()
  4. for i in nums:
  5. list1.remove(i)
  6. if i not in list1:
  7. return i
  8. list1.append(i)

代码1,运行如下:
在这里插入图片描述
代码2:

  1. class Solution:
  2. def singleNumber(self, nums: List[int]) -> int:
  3. return (3 * sum(set(nums)) - sum(nums)) // 2

代码2,运行如下:
在这里插入图片描述

C++语言

  1. class Solution {
  2. public:
  3. int singleNumber(vector<int>& nums) {
  4. int ones = 0, twos = 0;
  5. for (int x: nums) {
  6. // 之前出现过两次的,这次再出现就是出现了三次
  7. int threes = twos & x;
  8. // 之前出现过两次,这次没出现,是出现了两次。
  9. // 之前出现过一次的,这次再出现,也是出现了两次。
  10. twos = (twos & ~x) | (ones & x);
  11. // 统计记录出现了奇数次的,并从其中清除出现三次的。
  12. // 这样ones里面始终只会记录出现了一次的。
  13. ones = ones ^ x;
  14. ones &= ~threes;
  15. }
  16. return ones;
  17. }
  18. };

运行如下:
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,245人围观)

还没有评论,来说两句吧...

相关阅读

    相关 137. 出现数字 II

    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实