题目描述
136. 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
输入: [2,2,1]
输出: 1
示例 2:输入: [4,1,2,1,2]
输出: 4来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/single-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解答:
解答1:
个人思路:随便排个序,挨个比对,如果前后两项相等,跳过这两个,继续比较,直至找到不相等的为止。152ms
/** * @param {number[]} nums * @return {number} */ var singleNumber = function(nums) { nums.sort() for(let i = 0; i < nums.length; i++){ if(nums[i]===nums[i+1]){ i++ }else{ return nums[i] } } };
解答2:
查看已有算法,目前用时最少的是 位运算 异或 ^
52ms
异或运算比较容易理解的解释可以点击这里;
/** * @param {number[]} nums * @return {number} */ var singleNumber = function(nums) { return nums.reduce((sum, cur) => { return sum ^ cur }, 0) };
内容来源于网络如有侵权请私信删除
- 还没有人评论,欢迎说说您的想法!