【LeetCode】初級算法-136.只出現一次的數

題目描述

給定一個非空整數數組,除了某個元素只出現一次之外,其他每一個元素均出現兩次。找出那個只出現了一次的元素。算法

說明:數組

你的算法應該具備線性時間複雜度。 你能夠不使用額外空間來實現嗎?code

示例 1:排序

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

示例 2:ip

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

思路

排序,遍歷比較io

JavaScript實現

/**
 * @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

JavaScript實現

/**
 * @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;
};
相關文章
相關標籤/搜索