อาร์เรย์มีสมาชิกส่วนใหญ่เหมือนกัน มีเพียง 1 ตัวที่แตกต่าง ฟังก์ชันนี้หาตัวที่แตกต่างออก
ตัวอย่าง
// Input: [2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4] // Output: 2
ตัวอย่างโค้ด
const arr = [2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4];
const findUnlike = arr => {
for (let i = 1; i < arr.length - 1; i++) {
// ตรวจสอบรูปแบบต่างๆ ของตำแหน่งที่แตกต่าง
if (arr[i] - arr[i - 1] !== 0 && arr[i] - arr[i + 1] === 0) {
return arr[i - 1];
} else if (arr[i] - arr[i - 1] !== 0 && arr[i] - arr[i + 1] !== 0) {
return arr[i];
} else if (arr[i] - arr[i - 1] === 0 && arr[i] - arr[i + 1] !== 0) {
return arr[i + 1];
}
}
};
console.log(findUnlike(arr));
วิธีที่ดีกว่า (ใช้ Map)
const findUnlikeBetter = arr => {
const count = new Map();
for (const val of arr) {
count.set(val, (count.get(val) || 0) + 1);
}
for (const [val, cnt] of count) {
if (cnt === 1) return val;
}
};
ผลลัพธ์
2
ข้อสังเกต: โค้ดต้นฉบับมีเงื่อนไขซ้ำซ้อนและซับซ้อน วิธี Map เรียบง่ายกว่าและรองรับทุกกรณี