निम्नलिखित इनपुट और आउटपुट ऐरे पर विचार करें -
const input = ["0:3", "1:3", "4:5", "5:6", "6:8"]; const output = [ [0, 1, 3], [4, 5, 6, 8] ];
प्रत्येक संख्या को ग्राफ में एक नोड मानते हुए, और प्रत्येक जोड़ी x:y को नोड्स x और y के बीच एक एज मानते हुए, हमें उन संख्याओं के सेट ढूंढने हैं जिन तक परिभाषित एजेस का उपयोग करके पहुंचा जा सकता है।
अर्थात, ग्राफ सिद्धांत के संदर्भ में, ऐसे ग्राफ के भीतर विशिष्ट कनेक्टेड कंपोनेंट्स ढूंढें। उदाहरण के लिए, उपरोक्त ऐरे में, 4 से 0 तक पहुंचने का कोई रास्ता नहीं है इसलिए वे अलग ग्रुप में हैं, लेकिन 1 से 0 तक पहुंचने का रास्ता है (3 के माध्यम से) इसलिए वे एक ही ग्रुप में हैं। "वांछित आउटपुट संभावित रूप से रैंडम इनपुट सेट के आधार पर ट्रांसवर्सेबल नोड्स का ग्रुपिंग है।"
हमें एक JavaScript फ़ंक्शन लिखना है जो दिए गए इनपुट से वांछित आउटपुट बनाता है।
उदाहरण
const input = ["0:3", "1:3", "4:5", "5:6", "6:8"]; const groupRange = (arr = []) => { const res = [[]]; let count = 0; const a = [0]; let array = arr.map(el=> el.split(':').sort((a, b) => a - b)). sort((a, b) => a[0] - b[0]); array.forEach(el => { if (el[0] > a[a.length - 1]) { res.push(el); a.push(el[1]); count++; } else { res[count] = res[count].concat(el); a[a.length - 1] = el[1]; }; }); return res.map(el => [...new Set(el)].sort((a, b) => a - b)); } console.log(groupRange(input));आउटपुट
कंसोल में आउटपुट होगा -
[ ['0', '1', '3'], ['4', '5', '6', '8'] ]