English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Remoção de elementos repetidos de um array ordenado em Java

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.

Você também pode gostar