এই প্রশ্নের উদ্দেশ্যে, আমরা একটি ব্যবধানকে দুটি সংখ্যার অ্যারে হিসাবে সংজ্ঞায়িত করি যেখানে প্রথম সংখ্যাটি সর্বদা দ্বিতীয় সংখ্যার চেয়ে ছোট হয়৷
যেমন −
[4, 6], [2, 3], [6, 8], [2, 7], [1, 8] are all examples of valid intervals.
ধরুন, আমাদের কাছে ব্যবধানের একটি অ্যারে রয়েছে যা তাদের শুরুর সময় অনুসারে সাজানো হয়েছে (প্রতিটি ব্যবধানের প্রথম উপাদান)।
অ্যারের মধ্যে ব্যবধানগুলি অ-ওভারল্যাপিং যার মানে হল যে কোনও দুটি নির্বিচারে সন্নিহিত অন্তরের জন্য,
[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]]