加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Single Number

发布时间:2020-12-13 20:14:34 所属栏目:PHP教程 来源:网络整理
导读:本文是在学习中的总结,欢迎转载但请注明出处: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 runt

本文是在学习中的总结,欢迎转载但请注明出处: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; }


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读