JavaScript:leetcode_136. 只出現一次的數字(異或運算)

題目說明

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

說明:

你的算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?

示例 1:

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

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

解題思路一

主要看一下題目的要求,線性複雜度,不適用額外的空間。

  1. 這裏可以巧妙的使用異或運算符的特性,相同值的異或爲0;所有的值,異或0都是本身。數組的所有項向異或之後的結果就是隻出現一次的值
  2. 我使用了reduce的數組方法,事實上可能也新開闢了空間,我們完全按照題意的話,可以直接使用數組第1項進行代替。

代碼實現一

/**
 * @param {number[]} nums
 * @return {number}
 */
var singleNumber = function(nums) {
    return nums.reduce((sum, item, key, arr) => {
        return (sum ^= item)
    }, 0)
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章