ลำดับเลขคณิต (AP)
ลำดับที่ความต่างระหว่างพจน์ติดกันคงที่ เช่น 5, 7, 9, 11, 13...
ปัญหา
ได้รับอาร์เรย์ที่เป็น AP แต่ขาดตัวเลขหนึ่งตัว ให้หาตัวเลขที่หายไปในหนึ่งรอบการวน (one iteration)
ตัวอย่าง
const arr = [7, 13, 19, 31, 37, 43];
ตัวเลขที่หายคือ 25 (ระหว่าง 19 และ 31)
โค้ดตัวอย่าง
const arr = [7, 13, 19, 31, 37, 43];
const findMissingNumber = (arr = []) => {
let {length} = arr;
let diff1 = arr[1] - arr[0];
let diff2 = arr[length - 1] - arr[length - 2];
if (diff1 !== diff2) {
if (diff1 == 2 * diff2){ return arr[0] + diff2; }
else { return arr[length - 1] - diff1; }
}
for (let i = 1; i < length - 2; i++){
if (arr[i + 1] - arr[i] != diff1){ return arr[i] + diff1; }
}
return arr[0];
};
console.log(findMissingNumber(arr));
ผลลัพธ์
25