समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो संख्याओं की एक सरणी arr को एकमात्र आर्गुमेंट के रूप में लेता है।
हमारा फ़ंक्शन सबसे लंबे बढ़ते उपअनुक्रमों (सन्निकट या असन्निकट) की संख्या ढूंढना आवश्यक है।
उदाहरण के लिए, यदि इनपुट है:
इनपुट
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