「leetcode」268.缺失數字

原題

給定一個包含 0, 1, 2, ..., n 中 n 個數的序列,找出 0 .. n 中沒有出如今序列中的那個數。數組

示例 1:post

輸入: [3,0,1]
輸出: 2
複製代碼

示例 2:spa

輸入: [9,6,4,2,3,5,7,0,1]
輸出: 8
複製代碼

思路

本體的思路同「leetcode」136.只出現一次的數字基本相似,在一個0~n的連續數組中,缺乏一位。咱們在原有數組的基礎上,填充一份等長的數組,而後依次對數組中的每個成員使用異或操做符,步驟拆解以下:code

  1. nums = [a, b, d] a~d的連續數組中,缺乏cleetcode

  2. nums = [a, b, d, a, b, c, d] 在原有數組中填充一份0~n連續完整的數組get

  3. 使用異或^, 處理數組中每個數字 a ^ b ^ d ^ a ^ b ^ c ^ dio

  4. a ^ b ^ d ^ a ^ b ^ c ^ d 等價於 (a ^ a) ^ (b ^ b) ^ (d ^ d) ^ c 等價於 0 ^ 0 ^ 0 ^ c => cfunction

  5. 獲得缺乏的數字cclass

代碼

/** * @param {number[]} nums * @return {number} */
var missingNumber = function(nums) {
    let len = nums.length + 1
    let result = 0
    
    for (let i = 0; i < len; i++) {
        nums.push(i)
    }
    
    for (let i = 0; i < nums.length; i++) {
        result = nums[i] ^ result
    }
        
    return result 
};
複製代碼
相關文章
相關標籤/搜索