Cho một mảng Số, bất kỳ phần tử nào của mảng sẽ là phần tử đa số nếu phần tử đó xuất hiện nhiều hơn 1/2 lần chiều dài mảng trong mảng.
Ví dụ -
Nếu độ dài của mảng là 7,
Sau đó, nếu có bất kỳ phần tử nào trong mảng xuất hiện ít nhất 4 lần, phần tử đó sẽ được coi là đa số. Và rõ ràng là bất kỳ mảng cụ thể nào cũng có thể có nhiều nhất một phần tử đa số.
Chúng tôi được yêu cầu viết một hàm JavaScript nhận vào một mảng số có giá trị lặp lại và trả về true nếu tồn tại một phần tử đa số trong mảng. Nếu không có phần tử như vậy trong mảng, hàm của chúng ta sẽ trả về false.
Ví dụ
Sau đây là mã -
const arr = [12, 5, 67, 12, 4, 12, 4, 12, 6, 12, 12]; const isMajority = arr => { let maxChar = -Infinity, maxCount = 1; // this loop determines the possible candidates for majorityElement for(let i = 0; i < arr.length; i++){ if(maxChar !== arr[i]){ if(maxCount === 1){ maxChar = arr[i]; }else{ maxCount--; }; }else{ maxCount++; }; }; // this loop actually checks for the candidate to be the majority element const count = arr.reduce((acc, val) => maxChar===val ? ++acc : acc, 0); return count > arr.length / 2; }; console.log(isMajority(arr));
Đầu ra
Điều này sẽ tạo ra kết quả sau trong bảng điều khiển -
true