ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน 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