image

Bootcamps ilimitados + curso de inglês para sempre

80
%OFF
Article image
Isadora Ariane
Isadora Ariane02/12/2024 06:34
Compartilhe

TOP 25 ALGORITMOS | Boyer Moore Majority Voting (BMMV)

  • #Estrutura de dados

O algoritmo de votação Boyer-Moore é um dos algoritmos ótimos populares que é usado para encontrar o elemento majoritário entre os elementos dados que têm mais de N/2 ocorrências. Isso funciona perfeitamente bem para encontrar o elemento majoritário que leva 2 travessias sobre os elementos dados, o que funciona em complexidade de tempo O(N) e complexidade de espaço O(1).

📁 | Resumo

imageimageimage

🤖 | Código

.
function findMajority(nums){
  var count = 0, candidate = -1;

  // Encontrando candidato majoritário
  for (var index = 0; index < nums.length; index++) {
    if (count == 0) {
      candidate = nums[index];
      count = 1;
    } else {
      if (nums[index] == candidate)
        count++;
      else
        count--;
    }
  }

  // Verificando se o candidato majoritário ocorre mais de n/2 vezes
  count = 0;
  for (var index = 0; index < nums.length; index++) {
    if (nums[index] == candidate)
      count++;
  }
  if (count > (nums.length / 2))
    return candidate;
  return -1;

  // O último loop for e a etapa da instrução if podem ser 
  // ignorados se um elemento majoritário for confirmado como 
  // presente em uma matriz, basta retornar o candidato nesse caso
}
.

🕰️ | Complexidade de Tempo

A complexidade de tempo é O(n), com duas iterações consecutivas, mas ainda linear.

📦 | Complexidade de Espaço

A complexidade de espaço é constante, ou seja, O(1).

✔️ | Vantagens

✦ Eficiente;

✦ Uso mínimo de espaço;

✦ Implementação simples com lógica direta;

✦ Aplicabilidade no fluxo de dados contínuos;

❌ | Desvantagens

✦ Sensibilidade a dados extremos;

✦ Necessidade de validação posterior;

✦ Limitação a um único majority_element;

✦ Estrito para encontrar maiorias simples (>50%);

Compartilhe
Recomendados para você
Microsoft 50 Anos - Prompts Inteligentes
Microsoft 50 Anos - GitHub Copilot
Microsoft 50 Anos - Computação em Nuvem com Azure
Comentários (0)