給定一個非空整數數組,除了某個元素只出現一次之外,其他每一個元素均出現兩次。找出那個只出現了一次的元素。算法
說明:數組
你的算法應該具備線性時間複雜度。 你能夠不使用額外空間來實現嗎?code
示例 1:排序
輸入: [2,2,1] 輸出: 1
示例 2:ip
輸入: [4,1,2,1,2] 輸出: 4
排序,遍歷比較io
/** * @param {number[]} nums * @return {number} */ var singleNumber = function(nums) { nums.sort(); for(let i= 0; i < nums.length-1;i++){ //console.log(nums[i],i); if(nums[i] == nums[i+1]){ i++; }else{ return nums[i]; } } return nums[nums.length-1]; };
把數組的各值從頭至尾積累異或,結果就是出現一次的數 --@ VevoLiang
/** * @param {number[]} nums * @return {number} */ var singleNumber = function(nums) { let sum = nums[0]; for(let i = 1; i < nums.length; i++){ sum^=nums[i]; } return sum; };