समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो संख्याओं की एक सरणी arr को एकमात्र आर्गुमेंट के रूप में लेता है।
हमारा फ़ंक्शन सरणी arr के एक सन्निकट उपसरणी की सबसे छोटी संभावित लंबाई ढूंढना चाहिए, जिसमें पूरे सरणी के समान किसी तत्व की अधिकतम आवृत्ति हो।
उदाहरण के लिए, यदि इनपुट है:
इनपुट
const arr = [55, 77, 77, 88, 55];
आउटपुट
const output = 2;
आउटपुट व्याख्या
इनपुट सरणी में किसी तत्व की अधिकतम आवृत्ति 2 है क्योंकि 55 और 77 दोनों दो बार आते हैं। जिन उपसरणियों में पूरे सरणी के समान अधिकतम आवृत्ति है, उनमें सबसे छोटी लंबाई 2 है। इसलिए हम 2 लौटाते हैं।
उदाहरण
निम्नलिखित कोड है:
const arr = [55, 77, 77, 88, 55]; const shortestLength = (arr) => { let freq = 0; let len = Infinity; arr.reduce((acc, num, index) => { if (acc[num] !== undefined) { acc[num].freq += 1; acc[num].range[1] = index; } else { acc[num] = { freq: 0, range: [index, index], }; } if (acc[num].freq > freq) { freq = acc[num].freq; len = acc[num].range[1] - acc[num].range[0] + 1; } else if (acc[num].freq === freq) { len = Math.min(len, acc[num].range[1] - acc[num].range[0] + 1); } return acc; }, {}); return len; }; console.log(shortestLength(arr));आउटपुट
2