LeetCode 137. Single Number II--三次异或消除相同的数--C++,Python解法
题目地址: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解法相关推荐
- 【异或】LeetCode 137. Single Number II
LeetCode 137. Single Number II Solution1:不会做,抄的 博客转载自:http://www.cnblogs.com/grandyang/p/4263927.htm ...
- 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 ...
- Leetcode #137 Single Number II
题目链接:https://leetcode.com/problems/single-number-ii/ 题意表明有一个数字出现了一次,其他数字出现了三次,那么实现一个模3的计数器即可. 1 clas ...
- LeetCode 137.Single Number II 只出现一次的数字 II
题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? 示例 1: ...
- 137 Single Number II 数组中除了一个数外,其他的数都出现了三次,找出这个只出现一次的数...
给定一个整型数组,除了一个元素只出现一次外,其余每个元素都出现了三次.求出那个只出现一次的数. 注意: 你的算法应该具有线性的时间复杂度.你能否不使用额外的内存来实现? 详见:https://leet ...
- LEETCODE 137.Singel Number ii
Given an array of integers, every element appears three times except for one. Find that single one. ...
- [LeetCode]Single Number II
今天室友推荐了一道LeetCode上面的练习题Single Number II,题目大概的意思是有一个整形的数组,里面只有一个数是出现一次的,其他的数都出现了三次,然后让把这个数找出来. 第一眼看到这 ...
- 【?异或】LeetCode 260. Single Number III
LeetCode 260. Single Number III Solution1: 博客转载自:http://www.cnblogs.com/grandyang/p/4741122.html 这道题 ...
- 【异或】LeetCode 136. Single Number
LeetCode 136. Single Number Solution1:我的答案 还好异或的性质没记错,还好,还好 class Solution { public:int singleNumber ...
最新文章
- Oracle 10g与安装Perl环境时的冲突以及解决方法
- 初识php异步多线程扩展swoole
- 如何在网页中插入Flv视频文件
- C++中使用TCP传文件
- 藤条生长为字母的动画
- 怎么开启队友无伤_和平精英暗夜危机无敌点位送上!不仅无伤打僵尸 敌人还看不到你...
- nginx+lua+redis deny ip
- 玩转“网上邻居”之网络配置(一)
- 听说你还在找录屏软件?珍藏单文件版录屏软件送给你
- 树莓派ubuntu默认用户名密码及密码修改
- 【CISCO】链路聚合基础命令详解。
- 惠普打印机服务器状态未知,惠普打印机状态显示需要注意
- qt 实现PDF阅读器 (一)
- php ean13,php生成EAN_13标准条形码实例_php实例
- 谷牛期权持仓重心上移
- 阅读记录(2017年1月)
- 如何高效掌控K8s资源变化?K8s Informer实现机制浅析
- 再次思考:xdb和无锁2种设计方案
- 西甲:比利亚雷亚尔 VS 西班牙人
- 使用Composer管理项目第三方库文件
热门文章
- RStudio个性化界面配置
- 第十二课.Seq2Seq与Attention
- empty怎么发音_empty,怎么读,解答要读出来,empty怎么读慢一点,清楚一点!
- rust 手动关闭子线程_从零开始写 OS (9) —— 内核线程
- MPB:山大倪金凤组-黄翅大白蚁肠道放线菌的分离与培养
- 画图手册 | ImageGP:今天你“plot”了吗?
- R语言一键批量完成差异统计和可视化
- Cell Host综述-建立因果关系:合成菌群在植物菌群研究中的机会
- USEARCH11命令大全,200+命令中文简介,快速查找需要功能
- R语言dplyr包通过数据列的索引重命名数据列实战(Rename Column by Index Position)