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