leetcode-Single NumberII
https://leetcode.com/problems/single-number-ii/
很无耻的又一次使用了黑暗料理...
class Solution:
# @param {integer[]} nums
# @return {integer}
def singleNumber(self, nums):
# 又是一道黑暗料理..
return (sum(set(nums))*3 - sum(nums))/2
速度还OK,不过这不是重点。
这回我要老老实实讨论一下这类题目的解答方法。一开始拿到这个题目就知道这肯定是一个关系到比特处理的题目。至于怎么处理,就需要我们细细思考了。之前有一道类似的题目,不过它的数组里面是重复的数字都出现了2遍,而这次是出现了3遍。
之前出现两遍的怎么解决呢?我们可以对每一个数组元素进行异或运算,对于重复出现的数字异或之后的结果肯定就是0了,而对于只出现了一次的数字,我们就可以得到它的反,对它再取一次反就可以得到他的结果辣。
但是现在我们却发现情况变成3次了,异或不好使了。。咋办。
这就像是我们要做一个机器,机器的输入是0或1,输出也是0或1,如果我么连续按三次一样的按钮,那么输出0,否则输出1。
所以顺着这个思路我们是不是可以这么写一个小机器:
#我是机器
def robot(input):
n = 0
for i in input:
if i == 1:
n += 1
if n%3==0:
return 0
else:
return 1
说到这里,其实我们的目的已经达到了。
我们可以对数组的每一个元素放到机器中,每一个比特进行处理记录,最后得到的结果就是我们需要的数。
代码具体如下(来自互联网):
class Solution {
public:
int singleNumber(int A[], int n) {
int count[]={};
int result=;
for(int i=;i<;i++){
for(int j=;j<n;j++){
count[i]+=((A[j]>>i)&); //首先把输入数字的第i位加起来。
count[i]=count[i]%; //然后求它们除以3的余数。
}
result|=(count[i]<<i);//把二进制表示的结果转化为十进制表示的结果
}
return result;
}
};
leetcode-Single NumberII的更多相关文章
- [LeetCode] Single Number III 单独的数字之三
Given an array of numbers nums, in which exactly two elements appear only once and all the other ele ...
- [LeetCode] Single Number II 单独的数字之二
Given an array of integers, every element appears three times except for one. Find that single one. ...
- [LeetCode] Single Number 单独的数字
Given an array of integers, every element appears twice except for one. Find that single one. Note:Y ...
- LeetCode Single Number I / II / III
[1]LeetCode 136 Single Number 题意:奇数个数,其中除了一个数只出现一次外,其他数都是成对出现,比如1,2,2,3,3...,求出该单个数. 解法:容易想到异或的性质,两个 ...
- LeetCode:Single Number II
题目地址:here 题目大意:一个整数数组中,只有一个数出现一次,其余数都出现3次,在O(n)时间,O(1)空间内找到这个出现一次的数 对于”只有一个数出现一次,其余数出现2次“的情况,很简单,只要把 ...
- LeetCode Single Number III
原题链接在这里:https://leetcode.com/problems/single-number-iii/ 题目: Given an array of numbers nums, in whic ...
- [LeetCode] Single Element in a Sorted Array 有序数组中的单独元素
Given a sorted array consisting of only integers where every element appears twice except for one el ...
- [leetcode]Single Number II @ Python
原题地址:http://oj.leetcode.com/problems/single-number-ii/ 题意:Given an array of integers, every element ...
- [Leetcode] single number 找单个数
Given an array of integers, every element appears twice except for one. Find that single one. Note: ...
- [LeetCode] Single Number II 位运算
Given an array of integers, every element appears three times except for one. Find that single one. ...
随机推荐
- 容器--ArrayList
一.前言 作为List的重要实现之一,ArrayList已经成了我们编写程序时不可或缺的重要容器之一,面试的时候也经常会被问到,所以,深入理解其实现机制,无论是对于我们正确使用这个类来说,还是准备面试 ...
- ahjesus 让Boot Camp支持创建win7 u盘安装盘
通过修改BootCamp助理成功创建USB的windows7的安装盘. 以下将方法共享出来. 准备工作: 找到自己电脑的Boot Rom 版本.(点左上角那个小苹果标志 然后点 [关于本机] 然后点 ...
- RAID选项
RAID:Redundant Array Independent Disk(独立磁盘构成的具有冗余能力的阵列) 最常见的为RAID类型为:0,1,5和10:3和6很少见,但在某些环境中仍然有用. RA ...
- iOS 七牛云上传并获取图片----【客户端】
最近做了七牛云存储的有关内容,涉及到与后台交互获取验证的token,无奈,后台自命清高,不与理会,没办法呀,于是自己搞呗.首先呢在在七牛上注册一个账号,然后呢添加一个存储空间这时候空间名 ...
- CSS :first-child 伪类
CSS :first-child 伪类 向元素的第一个子元素添加样式,示例如下: 例 1 - 匹配第一个 <p> 元素(第一个段落显示为红色) <style type=&quo ...
- Atitit. Xss 漏洞的原理and应用xss木马
Atitit. Xss 漏洞的原理and应用xss木马 1. XSS漏洞1 2. XSS的用途2 2.1. 盗取cookie2 2.2. 刷新流量 刷分3 2.3. DOS 窃取隐私”.“假冒身份”. ...
- 对抗静态分析——运行时修复dex
对抗静态分析——运行时修复dex 本文来源:i春秋社区-分享你的技术,为安全加点温度 零.写在前面 这个系列本来题目想写对抗反编译,可是想想对抗反编译的这个范围有点大,总结如下 灵魂作图 ...
- 深入底层逆向分析TDC‘s keygenme(手脱压缩壳)
系统 : Windows xp 程序 : TDC‘s keygenme 程序下载地址 :http://pan.baidu.com/s/1gdWyt6z 要求 : 脱壳 & 注册机编写 使用工具 ...
- Android主线程不能访问网络异常解决办法
从两个方面说下这个问题: 1. 不让访问网络的原因 2. 解决该问题的办法 不让访问网络的原因: 由于对于网络状况的不可预见性,很有可能在网络访问的时候造成阻塞,那么这样一来我们的主线程UI线程 就会 ...
- 开始学习Oracle了
开始学习Oracle了,加油 参考书Oracle开发实战经典,李兴华老师编著