เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์จำนวนเต็มเป็นอาร์กิวเมนต์เดียว ฟังก์ชันต้องวนลูปผ่านอาร์เรย์และเลือกตัวเลขที่มากที่สุดซึ่งปรากฏเพียงครั้งเดียวในอาร์เรย์ คืนค่าตัวเลขนี้ และถ้าไม่มีตัวเลขที่ไม่ซ้ำ ให้คืน -1
เรายังทราบว่าค่าสูงสุดของสมาชิกอาร์เรย์ไม่เกิน 100 และมากกว่า 0 คือ:
0 < arr[i] < 101
สำหรับทุก i ในดัชนีอาร์เรย์
ตัวอย่าง
ถ้าอาร์เรย์นำเข้าคือ:
const arr = [35, 37, 33, 39, 34, 39, 38, 31];
ผลลัพธ์ควรเป็น:
const output = 38;
เนื่องจากค่าในอาร์เรย์จะอยู่ระหว่าง 1-100 เสมอ เราสามารถใช้อาร์เรย์ความยาว 100 เก็บความถี่ของแต่ละตัวเลข แล้ววนจากท้ายมาหาตัวเลขที่ไม่ซ้ำ
ตัวอย่างโค้ด
const arr = [35, 37, 33, 39, 34, 39, 38, 31];
const pickGreatestUnique = (arr = [], bound = 100) => {
const map = Array(bound).fill(0);
for(let i = 0; i < arr.length; i++) {
const num = arr[i];
map[num - 1]++;
}
for(let j = bound - 1; j >= 0; j--) {
const frequency = map[j];
if(frequency === 1) {
return j + 1;
}
}
return -1;
};
console.log(pickGreatestUnique(arr));
ผลลัพธ์
38