摘要: 题目:一个数组中有三个数字a、b、c只出现一次,其他数字都出现了两次。请找出三个只出现一次的数字。 分析:在博客http://zhedahht.blog.163.com/blog/static/2541117420071128950682/中我们讨论了如何在一个数组中找出两个只出现一次的数字。在这道 阅读全文
posted @ 2017-07-01 16:29 泡面小王子 阅读(435) 评论(0) 推荐(0) 编辑
摘要: 通常的交换两个变量a,b的过程为 int temp; temp=a a=b; b=temp; 需借助上面的第3个临时变量temp. 采用下面的方法,对于给定两个整数a,b,下面的异或运算可以实现a,b的交换,而无需借助第3个临时变量: a = a ^ b; b = a ^ b; a = a ^ b; 阅读全文
posted @ 2017-07-01 10:13 泡面小王子 阅读(848) 评论(0) 推荐(0) 编辑
摘要: 题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 思路: 首先交待一下异或的基本性质:2个相同的数异或等于0,且异或操作(^)满足结合律和交换律。 再来考虑一种简单一点的情况:一个数组中只有一个元素出现 阅读全文
posted @ 2017-07-01 09:19 泡面小王子 阅读(448) 评论(0) 推荐(0) 编辑