এই প্রশ্নের উদ্দেশ্যে, আমরা একটি ব্যবধানকে দুটি সংখ্যার অ্যারে হিসাবে সংজ্ঞায়িত করি যেখানে প্রথম সংখ্যাটি সর্বদা দ্বিতীয় সংখ্যার চেয়ে ছোট হয়৷
যেমন −
[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]]