समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो क्रमबद्ध पूर्णांकों की एक सरणी arr को एकमात्र आर्गुमेंट के रूप में लेता है।
हमारा फ़ंक्शन true लौटाना चाहिए यदि और केवल यदि हम सरणी को 1 या अधिक उपअनुक्रमों में विभाजित कर सकते हैं जैसे कि प्रत्येक उपअनुक्रम में लगातार पूर्णांक हों और लंबाई कम से कम 3 हो, अन्यथा false।
उदाहरण के लिए, यदि इनपुट है:
इनपुट
const arr = [1, 2, 3, 3, 4, 5];
आउटपुट
const output = true;
आउटपुट व्याख्या
हम उन्हें दो लगातार उपअनुक्रमों में विभाजित कर सकते हैं:
1, 2, 3 3, 4, 5
उदाहरण
निम्नलिखित कोड है:
const arr = [1, 2, 3, 3, 4, 5]; const canSplit = (arr = []) => { const count = arr.reduce((acc, num) => { acc[num] = (acc[num] || 0) + 1; return acc; }, {}); const needed = {}; for (const num of arr) { if (count[num] <= 0) { continue; } count[num] -= 1; if (needed[num] > 0) { needed[num] -= 1; needed[num + 1] = (needed[num + 1] || 0) + 1; } else if (count[num + 1] > 0 && count[num + 2]) { count[num + 1] -= 1; count[num + 2] -= 1; needed[num + 3] = (needed[num + 3] || 0) + 1; } else { return false; } } return true; }; console.log(canSplit(arr));आउटपुट
true