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