一、陣列元素為 1~100 內的整數,長度為 N,且數字不重複,如何查詢缺失的數字
題目:給定一陣列如 [1, 2, 3, 5],如何查詢出缺失的數字 4.
解題思路:數字有規律,1~100 內的連續數字,只缺失一個數字,只要求和相減即可 (Sum1 – Sum2)。其中, Sum1 代表的是完整不缺數字的期待總和,等於 1+2+3+4+5=5*(5+1)/2=15,其演變表示式為 N(N+1)/2; Sum2 代表是的陣列元素的總和,等於 1+2+3+5=11。所以缺失的數字為 4=15-11.
Javascript 實現:
function getMissingNum(arr){
var n = arr.length + 1; // N + 1, 最大項
var expectedSum = n * (n + 1) / 2; // Sum1
var sum = 0; // Sum2
arr.map(item=>sum+=item);
return expectedSum - sum;
}