国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php开源 > php教程 > Single Number

Single Number

来源:程序员人生   发布时间:2015-02-28 08:45:59 阅读次数:3008次

本文是在学习中的总结,欢迎转载但请注明出处: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)希望本文对你有所帮助。

算法代码实现以下:

/** * @author liqq */ public static int singleNumber(int[] A) { if (A.length == 0) return A[0]; int x = A[0]; for (int i = 1; i < A.length; i++) { x = x ^ A[i]; } return x; }


生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生