É um problema fácil com a descrição sendo:
Dado um array nums de tamanho n, retorne o elemento majoritário.
O elemento majoritário é o elemento que aparece mais de ⌊n / 2⌋ vezes. Você pode assumir que o elemento majoritário sempre existe na matriz.
Exemplo 1:
Entrada: nums = [3,2,3]
Saída: 3Exemplo 2:
Entrada: nums = [2,2,1,1,1,2,2]
Saída: 2Restrições:
n == nums.comprimento
1 -109
À primeira vista você pensaria em fazer um mapa e depois reunir aquele que mais aparece.
Pensando bem, se você pudesse classificar e obter aquele que aparece mais, isso serviria.
E com isso existe um jeito ainda mais simples. Se você ler atentamente a descrição, entenderá que um elemento majoritário é aquele que aparece em mais da metade do array.
Com isso em mente, se você classificasse e pegasse o índice do meio, isso resolveria o problema:
class Solution { public int majorityElement(int[] nums) { // sort Arrays.sort(nums); // if by majority element it means that appears more than half of nums size // then picking the middle element would be the one that's a majority element return nums[nums.length / 2]; } }
Tempo de execução: 4 ms, mais rápido que 54,53% dos envios online de Java para Majority Element.
Uso de memória: 53,5 MB, menos de 9,23% dos envios online de Java para Majority Element.
—
É isso! Se houver mais alguma coisa para discutir, sinta-se à vontade para deixar um comentário. Se eu perdi alguma coisa, avise-me para que eu possa atualizar adequadamente.
Até a próxima postagem! :)
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3