Dan*_*gur 4 javascript ecmascript-6
我被要求从1..N数组中找到丢失的数字.
例如,对于数组:let numArr = [2,4,6,8,3,5,1,9,10];缺少的数字是7
let numArr=[2,4,6,8,3,5,1,9,10];
numArr.sort(function(a,b){ //sort numArr
return a-b;
});
let newNumArr=[];
for(let i=1;i<=10;i++){
newNumArr.push(i);
}
for(let i=0;i<newNumArr.length;i++){ //compare with new arr
if(newNumArr[i] !== numArr[i]){
console.log('The missing num is:'+newNumArr[i]); //The missing num is:7
break;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用MAP和FILTER查找单独数组中缺少的数字
const numArr = [2, 4, 6, 8, 3, 5, 1, 9, 10];
const missingNumberArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(number => {
if (!numArr.includes(number)) {
return number;
}
}).filter(y => y !== undefined);
Run Code Online (Sandbox Code Playgroud)
您可以使用连续n数字之和的简单逻辑is n*(n+1)/2。从上面减去数组数字的总和将得到缺失的数字
let numArr=[2,4,6,8,3,5,1,9,10];
var sum = numArr.reduce((a,c) => a+c, 0);
// As the array contains n-1 numbers, here n will be numArr.length + 1
console.log(((numArr.length + 1) * (numArr.length + 2))/2 - sum);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |