题目地址:Single Number II - LeetCode


Given a non-empty array of integers, every element appears three times except for one, which appears exactly once. Find that single one.

Note:

Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

Example 1:

Input: [2,2,3,2]
Output: 3

Example 2:

Input: [0,1,0,1,0,1,99]
Output: 99

这是一道谷歌的面试题
这道题目意思很简单,就是找出没出现3次的数字。
最容易想到的想法是用字典,count。
Python解法如下:

from collections import Counter
class Solution:def singleNumber(self, nums: List[int]) -> int:s=Counter(nums)for i in s:if s[i]!=3:return i

然后会想可不可以用位运算,毕竟使用字典还是很费时的。
如何使用三次异或消去出现3次的数字。
官方解法如下:

class Solution:def singleNumber(self, nums: List[int]) -> int:seen_once = seen_twice = 0for num in nums:# first appearance: # add num to seen_once # don't add to seen_twice because of presence in seen_once# second appearance: # remove num from seen_once # add num to seen_twice# third appearance: # don't add to seen_once because of presence in seen_twice# remove num from seen_twiceseen_once = ~seen_twice & (seen_once ^ num)seen_twice = ~seen_once & (seen_twice ^ num)return seen_once

异或的解法难度极大,建议去看leetcode的讨论区:


C++解法如下:

class Solution {public:int singleNumber(vector<int>& nums) {int one = 0, two = 0, three = 0;for (int i = 0; i < nums.size(); ++i) {two |= one & nums[i];one ^= nums[i];three = one & two;one = one ^ three;two = two ^ three;}return one;}
};

LeetCode 137. Single Number II--三次异或消除相同的数--C++,Python解法相关推荐

  1. 【异或】LeetCode 137. Single Number II

    LeetCode 137. Single Number II Solution1:不会做,抄的 博客转载自:http://www.cnblogs.com/grandyang/p/4263927.htm ...

  2. Leetcode 137. Single Number II JAVA语言

    1 2 3 Given an array of integers, every element appears three times except for one, which appears ex ...

  3. Leetcode #137 Single Number II

    题目链接:https://leetcode.com/problems/single-number-ii/ 题意表明有一个数字出现了一次,其他数字出现了三次,那么实现一个模3的计数器即可. 1 clas ...

  4. LeetCode 137.Single Number II 只出现一次的数字 II

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

  5. 137 Single Number II 数组中除了一个数外,其他的数都出现了三次,找出这个只出现一次的数...

    给定一个整型数组,除了一个元素只出现一次外,其余每个元素都出现了三次.求出那个只出现一次的数. 注意: 你的算法应该具有线性的时间复杂度.你能否不使用额外的内存来实现? 详见:https://leet ...

  6. LEETCODE 137.Singel Number ii

    Given an array of integers, every element appears three times except for one. Find that single one. ...

  7. [LeetCode]Single Number II

    今天室友推荐了一道LeetCode上面的练习题Single Number II,题目大概的意思是有一个整形的数组,里面只有一个数是出现一次的,其他的数都出现了三次,然后让把这个数找出来. 第一眼看到这 ...

  8. 【?异或】LeetCode 260. Single Number III

    LeetCode 260. Single Number III Solution1: 博客转载自:http://www.cnblogs.com/grandyang/p/4741122.html 这道题 ...

  9. 【异或】LeetCode 136. Single Number

    LeetCode 136. Single Number Solution1:我的答案 还好异或的性质没记错,还好,还好 class Solution { public:int singleNumber ...

最新文章

  1. Oracle 10g与安装Perl环境时的冲突以及解决方法
  2. 初识php异步多线程扩展swoole
  3. 如何在网页中插入Flv视频文件
  4. C++中使用TCP传文件
  5. 藤条生长为字母的动画
  6. 怎么开启队友无伤_和平精英暗夜危机无敌点位送上!不仅无伤打僵尸 敌人还看不到你...
  7. nginx+lua+redis deny ip
  8. 玩转“网上邻居”之网络配置(一)
  9. 听说你还在找录屏软件?珍藏单文件版录屏软件送给你
  10. 树莓派ubuntu默认用户名密码及密码修改
  11. 【CISCO】链路聚合基础命令详解。
  12. 惠普打印机服务器状态未知,惠普打印机状态显示需要注意
  13. qt 实现PDF阅读器 (一)
  14. php ean13,php生成EAN_13标准条形码实例_php实例
  15. 谷牛期权持仓重心上移
  16. 阅读记录(2017年1月)
  17. 如何高效掌控K8s资源变化?K8s Informer实现机制浅析
  18. 再次思考:xdb和无锁2种设计方案
  19. 西甲:比利亚雷亚尔  VS  西班牙人
  20. 使用Composer管理项目第三方库文件

热门文章

  1. RStudio个性化界面配置
  2. 第十二课.Seq2Seq与Attention
  3. empty怎么发音_empty,怎么读,解答要读出来,empty怎么读慢一点,清楚一点!
  4. rust 手动关闭子线程_从零开始写 OS (9) —— 内核线程
  5. MPB:山大倪金凤组-黄翅大白蚁肠道放线菌的分离与培养
  6. 画图手册 | ImageGP:今天你“plot”了吗?
  7. R语言一键批量完成差异统计和可视化
  8. Cell Host综述-建立因果关系:合成菌群在植物菌群研究中的机会
  9. USEARCH11命令大全,200+命令中文简介,快速查找需要功能
  10. R语言dplyr包通过数据列的索引重命名数据列实战(Rename Column by Index Position)