เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของจำนวนเต็มเป็นอาร์กิวเมนต์เดียว ฟังก์ชันต้องตรวจสอบว่าจำนวนเต็มทุกตัวที่ปรากฏในอาร์เรย์มีความถี่ (จำนวนครั้งที่ปรากฏ) ที่ไม่ซ้ำกันหรือไม่
ถ้าความถี่ทุกตัวไม่ซ้ำกัน ให้คืนค่า true มิฉะนั้นคืนค่า false
ตัวอย่าง
ถ้าอาร์เรย์นำเข้าคือ:
const arr = [7, 5, 5, 8, 2, 4, 7];
ผลลัพธ์ควรเป็น:
const output = false;
เพราะตัวเลข 7 และ 5 ปรากฏทั้งคู่ 2 ครั้ง
วิธีการ
เราจะใช้แฮชแมป (hash map) เพื่อแมปตัวเลขไปยังความถี่ของมัน จากนั้นใช้แมปนั้นสร้างเซต (set) ที่เก็บความถี่ที่ไม่ซ้ำกัน
ตัวอย่างโค้ด
const arr = [7, 5, 5, 8, 2, 4, 7];
const uniqueAppearances = (arr = []) => {
const map = {};
const set = new Set();
for(let i = 0; i < arr.length; i++) {
const el = arr[i];
map[el] = (map[el] || 0) + 1;
}
for(key in map) {
const value = map[key];
if(set.has(value)) {
return false;
}
set.add(value);
}
return true;
};
console.log(uniqueAppearances(arr));
ผลลัพธ์
false