इस प्रश्न के प्रयोजन के लिए, हम एक अंतराल को दो संख्याओं की एक सरणी के रूप में परिभाषित करते हैं जहां पहली संख्या हमेशा दूसरी संख्या से छोटी होती है।
उदाहरण के लिए -
[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]]