Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ความยาวที่น้อยที่สุดที่เป็นไปได้ประกอบด้วยความถี่สูงสุดใน JavaScript


ปัญหา

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