সমস্যা বিবরণ
স্ট্রিক্টলি ইনক্রিজিং অ্যারে (কিছু নম্বর মিসিং) দেওয়া আছে। nth মিসিং নম্বর বের করতে হবে।
ইনপুট: [2, 3, 4, 7, 11], n = 4
মিসিং নম্বর: 1, 5, 6, 8, 9, 10... → 4th মিসিং = 8
সমাধান
const arr = [2, 3, 4, 7, 11];
const findMissing = (arr = [], n) => {
let el = 0;
let diff = 0;
for (let i = 0; i < arr.length; ++i) {
const difference = arr[i] - el - 1;
const sum = diff + difference;
if (sum >= n) break;
diff = sum;
el = arr[i];
}
return el + n - diff;
};
console.log(findMissing(arr, 4)); // 8
আউটপুট
8
ব্যাখ্যা
el= প্রসেস করা লাস্ট এলিমেন্ট।difference= বর্তমান এলিমেন্ট এবং প্রিভাস এলিমেন্টের মাঝপথে মিসিং নম্বর কাউন্ট।sum= মোট মিসিং কাউন্ট আপডেট।- যখন
sum >= n, লুপ ব্রেক করেel + n - diffদিয়ে nth মিসিং বের করা হয়।