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

การหากลุ่มที่มีสมาชิกมากที่สุดซึ่งผลรวมหลักเท่ากันใน JavaScript

เราต้องเขียนฟังก์ชัน JavaScript ที่รับจำนวนเต็มบวก n เป็นอาร์กิวเมนต์เดียว ฟังก์ชันต้องจัดกลุ่มจำนวนเต็ม 1 ถึง n เป็นซับอาร์เรย์ โดยซับอาร์เรย์แต่ละอันมีสมาชิกที่ผลรวมหลักเท่ากัน จากนั้นตรวจสอบแต่ละซับอาร์เรย์และคืนค่าความยาวของซับอาร์เรย์ที่มีสมาชิกมากที่สุด

ตัวอย่าง

ถ้าตัวเลขนำเข้าคือ:

const num = 15;

ผลลัพธ์ควรเป็น:

const output = 2;

เพราะกลุ่มต่างๆ คือ:

[1, 10], [2, 11], [3, 12], [4, 13], [5, 14], [6, 15], [7], [8], [9]

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

const num = 67;
const countLargestGroup = (num = 1) => {
  if(num < 10) {
    return num;
  }
  let res = 0;
  let temp = 0;
  let map = {};
  for(let i = 1; i <= num; i++) {
    let sum = 0;
    let num = i;
    while (num) {
      sum += num % 10;
      num = Math.floor(num / 10);
    }
    if(map[sum] != undefined) {
      map[sum]++;
    } else {
      map[sum] = 1;
    }
  }
  for (const key of Object.keys(map)) {
    if(temp == map[key]) {
      res++;
    } else if(temp < map[key]) {
      res = 1;
      temp = map[key];
    }
  }
  return res;
};
console.log(countLargestGroup(num));

ผลลัพธ์

4