本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42713315
Given an array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
思路:
(1)题意为给定1个整形数组,其中数组中除1个元素以外,其它任意元素都出现两次,求只出现1次的元素。
(2)由于题目限制了时间复杂度为线性的,即不能出现屡次for循环,且建议最好不要申请额外的空间。这样,我们就需要思考,如何在遍历数组1次的情况下找出出现1次的元素。斟酌到能否想办法把相同的元素都消除掉,这里我们就需要应用不常见的特殊运算符“^”― 按位异或运算。我们知道异或运算相同的位会消除,例4^4=(2进制)10^(2进制)10=(2进制)00,这样就消除相同的数字。即便数组中相同数字是非连续的,根据加法的交换律,能够得到一样的结果。
(3)希望本文对你有所帮助。
算法代码实现以下: