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. ...
随机推荐
- http 响应码
一.HTTP码应码响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行. 响应码分五种类型,由它们的第一位数字表示:1.1xx:信息,请求收到,继续处理2.2xx:成功,行为被成功 ...
- event 对象 小记
event对象的属性提供了有关事件的细节并且通过event对象的方法,可以控制事件的继续传播和阻止事件的默认行为 2级DOM Events 标准定义了一个标准的事件模型 被除了IE外的所有现代浏览器 ...
- H5实现的可自定义贪吃蛇游戏
原创游戏,使用lufylegend.js开发 用canvas实现的贪吃蛇游戏,与一般的贪吃蛇游戏不同,图片经过美工设计,代码设计支持扩展和自定义. 游戏元素丰富,包括障碍物(仙人掌),金币(奖励),苹 ...
- js实现拖拽
拖拽:最核心是三个事件,鼠标按下,鼠标移动,鼠标弹起.按下时激活拖拽,然后时刻根据鼠标的位置来更新物体的left和top值,达到跟随鼠标的效果,鼠标弹起则取消拖拽. 以下是代码: <!DOCTY ...
- XML的约束(dtd)
DTD(Document Type Definition),文档类型定义,DTD文件应使用UTF-8或Unicode 1.XML中有多少个元素,就在dtd文件中写几个 <!ELEMENT&g ...
- JavaScript indexOf() 方法和 lastIndexOf() 方法
一,定义和用法 indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置. lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索 ...
- Smartforms常见问题
分类: 1.使用SFSY-FORMPAGES显示总页数的时候,如果页数大于9,将会在前10页显示成星号* 解决: 有时候这样做完之后,星号*是没有了,但是字体会有颠倒或者重叠的现象. 如果出了这个问题 ...
- Sharepoint学习笔记—习题系列--70-573习题解析 -(Q45-Q47)
Question45You create and deploy a custom Web Part.You add the Web Part to a page and receive a run-t ...
- IOS 网络浅析-(五 xml解析)
XML 可扩展标记语言 用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言 易读性高,编码手写难度小,数据量大 NSXMLPars ...
- 五种创建UIImage的类方法
五种创建UIImage的类方法 UIImage有五个类方法,用来创建UIImage的.下面介绍一下每个类方法的作用和创建实例. 1.使用类方法imageNamed:创建 + (UIImage *)im ...