该题目提到,一个数组中除了一个数只出现一次之外,其他数都出现了两次,找出这个特别的数。这道题对时间和空间有要求,面对这种情况,一般是暗示有十分轻巧而简便的方法进行求解。在一些场景下,使用基本的逻辑运算是个不错的选择。自己简单写了一下,再参照网上部分解法,基本都是使用了异或运算(XOR),任何数与自己进行按位异或都等于0,而任何数与0进行按位异或都等于本身。...
分类:
其他好文 时间:
2015-09-05 00:12:23
阅读次数:
166
题目来源:《剑指offer》面试题40 题目:一个整形数组除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度O(n),空间复杂度O(1) 分析:运用异或的思想。我们从头到尾一次异或数组中的每一个数字,那么最终得到的结果就是两个只出现一次的数字的异或结...
分类:
编程语言 时间:
2015-09-04 22:33:48
阅读次数:
206
题目:1-N放在含有N个元素的数组中(N=1001),只有唯一的一个元素值重复,其它均只出现一次.每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助存储空间,能否设计一个算法实现?(1) 方法一:(当N为比较大时警惕溢出)将1001个元素相加减去1,2,3,……1000数列的和,得到的差即...
分类:
编程语言 时间:
2015-09-04 16:57:32
阅读次数:
170
题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路:(1)首先考虑数组中若是只有一个数字是出现一次,其他都是出现两次的情况,在这种情况下,将所有的数字都位异或运算(^),因为相同的数字异或结果为0,所以最后地到的结果就是那个出现一次的数。(2)下面...
分类:
编程语言 时间:
2015-09-03 19:14:54
阅读次数:
204
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。数字都出现两次,则异或肯定为0。考虑下这个题目的简化版——数组中除一个数字只出现1次外,其它数字都成对出现,要求尽快找出这个数字。根据异或运算的特点,直接异或一次就可以找出这个数字。现在数组中有两个数字只出现...
分类:
编程语言 时间:
2015-09-02 00:41:36
阅读次数:
189
在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置。若为空串,返回-1char大小为8bit,最多256。创建hash[256]计算每个字符出现的次数。 1 class Solution { 2 public: 3 int FirstNotRep...
分类:
其他好文 时间:
2015-09-01 16:31:38
阅读次数:
109
题目:输入一个数组,该数组中有两个只出现一次的数字,其他的数字都出现两次,输出出只出现一次的数字。思路:首先,我们可以将这个数组分成两份,一份里面放一个只出现一次的数字。那么我们该怎么分呢?将整个数组中的数字都异或,那么那些等的数字异或后都化为0,因此最后出现的不为0的数字就是两个只出现一次的数字他...
分类:
编程语言 时间:
2015-08-30 11:17:11
阅读次数:
146
给出一个后缀表达式f(x),最多出现一次x,解方程f(x) = 0。读取的时候用一个栈保存之前的结点,可以得到一颗二叉树,标记出现'X'的路径,先把没有出现'X'的子树算完,由于读取建树的时候是由底向上的,这步可以在读取的时候顺带完成。注意'X'或'1/x'在某个结点和'0'相乘,那么'X'等效与没...
分类:
其他好文 时间:
2015-08-29 15:12:54
阅读次数:
617
难度:中等一个整数数组,除了一个数之外所有数字都出现了2次,找出这个数字来。注意: 你的算法应该是线性运行复杂度,且不能使用额外内存空间。答案:public class Solution { public int singleNumber(int[] nums) { int n ...
分类:
编程语言 时间:
2015-08-28 00:23:45
阅读次数:
183
难度:中等一个整数数组,除了一个数之外所有数字都出现了3次,找出这个数字来。注意: 你的算法应该是线性运行复杂度,且不能使用额外内存空间。答案:public class Solution { public int singleNumber(int[] nums) { int on...
分类:
编程语言 时间:
2015-08-28 00:23:15
阅读次数:
238