এই প্রশ্নের উদ্দেশ্যে, আমরা একটি ইন্টারভালকে দুটি নম্বরের অ্যারে হিসেবে ডিফাইন করব যেখানে প্রথম নম্বরটি সবসময় دومটির চেয়ে ছোট হবে।
উদাহরণস্বরূপ:
[4, 6], [2, 3], [6, 8], [2, 7], [1, 8] সবগুলো হলো বৈধ ইন্টারভাল।
ধরুন, আমাদের কাছে একটি ইন্টারভাল অ্যারে আছে যেটি তাদের স্টার্ট টাইম (প্রতিটি ইন্টারভালের প্রথম এলিমেন্ট) অনুযায়ী সর্টেড।
অ্যারেতে ইন্টারভালগুলো নন-ওভারল্যাপিং অর্থাৎ যেকোনো দুটি আrbitrary আডজেসেন্ট ইন্টারভালের জন্য:
[m, n], [x, y] m < n < x < y
তাই, এর একটি উদাহরণ হতে পারে:
const arr = [[ 2, 4], [5, 7], [9, 10], [13, 17]];
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা প্রথম আর্গুমেন্ট হিসেবে এমন একটি ইন্টারভাল অ্যারে এবং دوم আর্গুমেন্ট হিসেবে একটি সিঙ্গেল ইন্টারভাল নেবে।
ফাংশনটি ইন্টারভালটিকে অ্যারেতে তার সঠিক পজিশনে ইনসার্ট করবে, অ্যারেতে নন-ওভারল্যাপিং প্রোপার্টি মেইন্টেইন করে।
প্রয়োজনে অ্যারেতে দুটি বা ততোধিক ইন্টারভাল মার্জ করা যাবে নন-ওভারল্যাপিং রাখতে।
উদাহরণস্বরূপ, যদি উপরের অ্যারেতে ইনসার্ট করতে হয় [6, 13] তবে আউটপুট হবে:
const output = [[2, 4], [5, 17]];
উদাহরণ
নিচে কোডটি দেওয়া হলো:
const arr = [[2, 4], [5, 7], [9, 10], [13, 17]]; const interval = [6, 13]; const insertWithin = (arr = [], interval = []) => { const res = []; let ind = 0; while (arr[ind] && arr[ind][1] < interval[0]) { res.push(arr[ind]); ++ind; }; let start = interval[0]; let end = interval[1]; while (arr[ind] && arr[ind][0] <= interval[1]) { start = Math.min(start, arr[ind][0]); end = Math.max(end, arr[ind][1]); ++ind; } res.push([start, end]); while (arr[ind]) { res.push(arr[ind]); ++ind; } return res; }; console.log(insertWithin(arr, interval));আউটপুট
কনসোল আউটপুট:
[[2, 4], [5, 17]]