美文网首页
leetcode的题目136. 只出现一次的数字

leetcode的题目136. 只出现一次的数字

作者: 二木二三水 | 来源:发表于2018-07-04 22:58 被阅读0次

    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

    说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

    示例 1:

    输入: [2,2,1]     输出: 1

    示例 2:

    输入: [4,1,2,1,2]     输出: 4

    我的思路:先将数组进行排序,再进行遍历,每一次都判断当前元素与前后元素是否相同,都不相同则代表是唯一,注意第一个与最后一个单独处理。(虽然通过了,但这个思路是不符合说明的第一点,所以效率很低)

    正确思路应该是使用【按位异或:从二进制的角度出发,相同为0,不同为1,任何数与0异或都将返回原来的数,与本身进行异或将返回0】根据这种特点,题目中说明重复元素只会重复两次,所以遍历,每一位元素都进行异或,相同元素会“变为0”,不产生效果(与本身进行异或将返回0),只有唯一的元素会产生效果。做法:定义一个变量tmp为0,遍历数组,逐个元素与tmp按位异或,最后得到的tmp就是唯一元素的值。

    相关文章

      网友评论

          本文标题:leetcode的题目136. 只出现一次的数字

          本文链接:https://www.haomeiwen.com/subject/uloyuftx.html