समस्या
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना आवश्यक है जो संख्याओं की एक सरणी लेता है, एआर, पहले और एकमात्र तर्क के रूप में।
हमारे फ़ंक्शन को सबसे लंबे समय तक बढ़ते अनुक्रमों (सन्निहित या गैर-सन्निहित) की संख्या को खोजने की आवश्यकता है।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है
इनपुट
const arr = [2, 4, 6, 5, 8];
आउटपुट
const output = 2;
आउटपुट स्पष्टीकरण
दो सबसे लंबे समय तक बढ़ते क्रम [2, 4, 5, 8] और [2, 4, 6, 8] हैं।
उदाहरण
निम्नलिखित कोड है -
const arr = [2, 4, 6, 5, 8]; const countSequence = (arr) => { const distance = new Array(arr.length).fill(1).map(() => 1) const count = new Array(arr.length).fill(1).map(() => 1) let max = 1 for (let i = 0; i < arr.length; i++) { for (let j = i + 1; j < arr.length; j++) { if (arr[j] > arr[i]) { if (distance[j] <= distance[i]) { distance[j] = distance[i] + 1 count[j] = count[i] max = Math.max(distance[j], max) } else if (distance[j] === distance[i] + 1) { count[j] += count[i] } } } } return distance.reduce((acc, d, index) => { if (d === max) { acc += count[index] } return acc }, 0) } console.log(countSequence(arr));
आउटपुट
2