Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

วิธีหาและคืนลำดับตัวเลขซ้ำที่ยาวที่สุดในอาร์เรย์ด้วย JavaScript


ภาพรวม

เราต้องเขียนฟังก์ชันที่รับอาร์เรย์ตัวเลขที่อาจมีอิลิเมนต์ซ้ำ ฟังก์ชันควรคืนค่าความยาวของลำดับตัวเลขซ้ำติดต่อกันที่ยาวที่สุด

ตัวอย่าง

อินพุต: const arr = [2, 1, 1, 2, 3, 3, 2, 2, 2, 1];

เอาต์พุต: 3 เพราะตัวเลข 2 ซ้ำติดต่อกัน 3 ครั้ง (มากที่สุด)

ตัวอย่างโค้ด

const arr = [2, 1, 1, 2, 3, 3, 2, 2, 2, 1];

const findLongestSequence = (arr = []) => {
  const res = arr.reduce((acc, val, ind) => {
    if(acc.length && acc[acc.length-1][0] === val) {
      acc[acc.length-1].push(val);
    } else {
      acc.push([val]);
    }
    return acc;
  }, []).reduce((acc, val) => {
    return val.length > acc.length ? val : acc;
  });
  return res.length;
};

console.log(findLongestSequence(arr));

ผลลัพธ์ในคอนโซล

3