সমস্যা
একটি সংখ্যার অ্যারে arr দেওয়া আছে। পুরো অ্যারেতে যেকোনো এলিমেন্টের সর্বোচ্চ ফ্রিকোয়েন্সি যত, সেটি পুরো অ্যারেতেও থাকে এমন একটি সংলগ্ন (contiguous) উপ-অ্যারের ন্যূনতম দৈর্ঘ্য বের করতে হবে।
উদাহরণ:
ইনপুট
const arr = [55, 77, 77, 88, 55];
আউটপুট
const output = 2;
ব্যাখ্যা
ইনপুট অ্যারেতে ৫৫ এবং ৭৭ উভয়ই দুইবার এসে সর্বোচ্চ ফ্রিকোয়েন্সি ২। এই ফ্রিকোয়েন্সি ধারণকারী সবচেয়ে ছোট উপ-অ্যারে হলো [77, 77] বা [55, 55] (দৈর্ঘ্য ২)।
উদাহরণ কোড
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