LeetCode 268 缺失數字

2021-10-02 19:27:18 字數 876 閱讀 1875

題目描述

給定乙個包含 0, 1, 2, …, n 中 n 個數的序列,找出 0 … n 中沒有出現在序列中的那個數。

實現1:位運算(異或)

陣列元素與陣列下標逐個進行異或,結果再與陣列長度異或,結果就是缺失的數字

public

intmissingnumber1

(int

nums)

return missing;

}

實現2:排序
public

intmissingnumber2

(int

nums)

// 缺失的是前面的數字

for(

int i =

0; i < nums.length; i++)}

return-1

;}

實現3:雜湊表
public

intmissingnumber3

(int

nums)

for(

int i =

0; i < nums.length +

1; i++)}

return-1

;}

實現4:求和

sumall:數字 0 到 n 之和 :使用等差數列求和公式:(首項 + 末項) * 項數 / 2 (求和時忽略 0)

sumnums:次數組元素之和

兩者相減即為缺失的數字

public

intmissingnumber4

(int

nums)

return sumall - sumnums;

}

LeetCode 268 缺失數字

給定乙個包含0,1,2,n中 n 個數的序列,找出 0 n 中沒有出現在序列中的那個數。示例 1 輸入 3,0,1 輸出 2示例 2 輸入 9,6,4,2,3,5,7,0,1 輸出 8說明 你的演算法應具有線性時間複雜度。你能否僅使用額外常數空間來實現?思路 首先通過set將nums排序,然後通過乙...

LeetCode 268 缺失數字

給定乙個包含 0,1,2,n 中 n 個數的序列,找出 0 n 中沒有出現在序列中的那個數。示例 1 輸入 3,0,1 輸出 2 示例 2 輸入 9,6,4,2,3,5,7,0,1 輸出 8 說明 你的演算法應具有線性時間複雜度。你能否僅使用額外常數空間來實現?思路1 異或。對0 n進行異或將得到某...

leetcode 268 缺失數字

給定乙個包含0,1,2,n中 n 個數的序列,找出 0 n 中沒有出現在序列中的那個數。示例 1 輸入 3,0,1 輸出 2示例 2 輸入 9,6,4,2,3,5,7,0,1 輸出 8說明 你的演算法應具有線性時間複雜度。你能否僅使用額外常數空間來實現?思路一 由於題目中的資料給定的是 0 n 所以...