Estou fazendo um exercício do site Leet Code.
Dado um array inteiro numsclassificado em ordem não decrescente , remova as duplicatas no local de forma que cada elemento único apareça apenas uma vez . A ordem relativa dos elementos deve ser mantida a mesma . Em seguida, retorne o número de elementos exclusivos emnums .
Considere o número de elementos exclusivos de numsto be k, para ser aceito, você precisa fazer o seguinte:
Altere a matriz numsde forma que os primeiros kelementos de numscontenham os elementos exclusivos na ordem em que estavam presentes numsinicialmente. Os elementos restantes de numsnão são importantes, assim como o tamanho de nums. Retornar k. Juiz personalizado:
O juiz testará sua solução com o seguinte código:
int[] num = [...]; // Array de entrada int[]Nums esperados = [...]; // A resposta esperada com comprimento correto
int k = removeDuplicates(nums); // Chama sua implementação
assert k == esperadoNums.length; for (int i = 0; i < k; i++) { assert nums[i] == esperadoNums[i]; } Se todas as asserções forem aprovadas, sua solução será aceita .
Exemplo 1:
Entrada: nums = [1,1,2] Saída: 2, nums = [1,2,_] Explicação: Sua função deve retornar k = 2, com os dois primeiros elementos de nums sendo 1 e 2 respectivamente. Não importa o que você deixa além do k retornado (portanto, são sublinhados). Exemplo 2:
Entrada: nums = [0,0,1,1,1,2,2,3,3,4] Saída: 5, nums = [0,1,2,3,4,,_,,_, _] Explicação: Sua função deve retornar k = 5, com os cinco primeiros elementos de nums sendo 0, 1, 2, 3 e 4, respectivamente. Não importa o que você deixa além do k retornado (portanto, são sublinhados).
Eu fiz assim, no eclipse deu certo, mas no site não está dando certo:
import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set;
class Solucao { public static void main(String[] args) {
List<Integer> nums = new ArrayList<>();
nums.add(1);
nums.add(2);
nums.add(3);
nums.add(3);
nums.add(4);
nums.add(2);
Set<Integer> sets = new HashSet<>(nums);
System.out.println(sets);
}
}