262 字
1 分钟
算法之只出现一次的数字
136.给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

解法:
1.哈希表
简单不接受,需要开辟新空间
2.逻辑运算符
/** * @param {number[]} nums * @return {number} */var singleNumber = function (nums) { for (let i = 0, l = nums.length; i < l; i++) { nums[i + 1] = nums[i] ^ nums[i + 1]; } return nums[nums.length - 1];};思路:
逻辑 或非 运算符的特点就是,某个数或非本事就是 0,0或非任意数都是任意数
再不开辟新空间的情况下,根据数组特点我们知道,除了那个一次出现的数据,其他都是成双的
那我们把相邻两数 或非 运算的结果赋值给下一个,不断的或非下去,最终得到的最后一位数,就是出现一次的数
算法之只出现一次的数字
https://nollieleo.github.io/posts/算法之只出现一次的数字/