Cho mảng chứa các phần tử giống nhau trừ một phần tử. Tìm phần tử "khác biệt" đó.
Ví dụ
Mảng: [2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4] → phần tử khác là 2
Giải pháp
Mã triển khai (kiểm tra 3 phần tử liên tiếp):
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] && arr[i] === arr[i+1]) return arr[i-1];
if (arr[i] !== arr[i-1] && arr[i] !== arr[i+1]) return arr[i];
if (arr[i] === arr[i-1] && arr[i] !== arr[i+1]) return arr[i+1];
}
// Xử lý trường hợp phần tử khác ở đầu hoặc cuối
if (arr[0] !== arr[1]) return arr[0];
if (arr[arr.length-1] !== arr[arr.length-2]) return arr[arr.length-1];
};
console.log(findUnlike(arr));
Kết quả
Đầu ra trong console:
2
Cách tốt hơn: Dùng arr.find(el => arr.filter(x => x === el).length === 1) hoặc XOR nếu là số.