Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

JavaScript: Xác định mảng có phần tử chiếm đa số và trả về TRUE nếu có


Chúng ta cần viết hàm JavaScript nhận vào mảng số có giá trị lặp lại và trả về số xuất hiện nhiều hơn n/2 lần (n là độ dài mảng). Nếu không có phần tử nào như vậy, trả về false.

Dưới đây là mã sử dụng thuật toán Boyer-Moore voting:

Ví dụ

const arr = [12, 5, 67, 12, 4, 12, 4, 12, 6, 12, 12]; const arr1 = [3, 565, 7, 23, 87, 23, 3, 65, 1, 3, 6, 7]; const findMajority = arr => { let maxChar = -Infinity, maxCount = 1; for(let i = 0; i < arr.length; i++){ if(maxChar !== arr[i]){ if(maxCount === 1){ maxChar = arr[i]; } else { maxCount--; }; } else { maxCount++; }; }; const count = arr.reduce((acc, val) => maxChar===val ? ++acc : acc, 0); return count > arr.length / 2; }; console.log(findMajority(arr)); console.log(findMajority(arr1));

Kết quả

Đầu ra trong console sẽ là:

true false