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

Kiểm tra mảng có phần tử chiếm đa số - JavaScript


Cho mảng số, phần tử bất kỳ là "phần tử đa số" (majority element) nếu xuất hiện nhiều hơn n/2 lần (n là độ dài mảng).

Ví dụ: mảng độ dài 7, nếu có phần tử xuất hiện ít nhất 4 lần thì là majority. Rõ ràng mảng chỉ có tối đa một majority element.

Chúng ta cần viết hàm nhận vào mảng số có giá trị lặp và trả về true nếu tồn tại majority element, ngược lại false.

Ví dụ

Dưới đây là đoạn code:

const arr = [12, 5, 67, 12, 4, 12, 4, 12, 6, 12, 12]; 
const isMajority = arr => { 
  let maxChar = -Infinity, maxCount = 1; 
  // vòng lặp xác định ứng viên tiềm năng
  for(let i = 0; i < arr.length; i++){ 
    if(maxChar !== arr[i]){ 
      if(maxCount === 1){ 
        maxChar = arr[i]; 
      }else{ 
        maxCount--; 
      }; 
    }else{ 
      maxCount++; 
    }; 
  }; 
  // vòng lặp kiểm tra ứng viên có thực sự là majority
  const count = arr.reduce((acc, val) => maxChar===val ? ++acc : acc, 0); 
  return count > arr.length / 2; 
}; 
console.log(isMajority(arr));

Kết quả

Đoạn code sẽ in ra console:

true