題目描述
給定乙個包含 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 所以...