English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Descrição do problema
Dado um array ordenado, remova os elementos repetidos do array, mantenha apenas um elemento repetido e retorne o novo comprimento do array.
Requisitos:
Não aloque espaço extra para o array, você deve usar o tamanho de memória constante para operações em local.
Por exemplo:
Dado o array A=[1,1,2],a função chamada deve retornar o comprimento length=2e agora A se torna [1,2]。
Entrada
Um array ordenado, por exemplo, [1,1,2]。
Saída
Retornar o novo comprimento do array, por exemplo, length=2.
Método de ponteiros rápido e lento
Configurar o ponteiro fast para percorrer o array e o ponteiro slow para apontar para o próximo elemento não repetido.
public static int removeDuplicates(int[] nums) { if (nums.length < 1); return nums.length; int slow = 1; for (int fast = 1; fast < nums.length; fast++) { if (nums[fast] != nums[slow - 1]) { nums[slow++]= nums[fast]; } } return slow; }
Demonstração em Animação:
Expansão
Remover elementos repetidos de um array já ordenado, mantendo o número de dígitos especificado.
public static int removeDuplicatesN(int[] nums, int repeatN) { if (nums.length <= repeatN) return nums.length; int index = repeatN; for (int i = repeatN; i < nums.length; i++) { if (nums[i] != nums[index - repeatN]) { nums[index++]= nums[i]; } } return index; }
Isso é tudo o que há no artigo. Espero que ajude no seu aprendizado e que você apóie o Tutorial Yell.
Declaração: O conteúdo deste artigo é extraído da Internet, pertence ao respectivo proprietário, fornecido voluntariamente pelos usuários da Internet e carregado por eles mesmos. Este site não possui direitos de propriedade, não foi editado manualmente e não assume responsabilidade por questões legais relacionadas. Se você encontrar conteúdo suspeito de violação de direitos autorais, por favor, envie um e-mail para: notice#w3Aviso: Quando enviar um e-mail, substitua # por @ para denunciar e forneça provas relevantes. Se confirmado, o site deletará imediatamente o conteúdo suspeito de violação de direitos autorais.