Exemplo
K = 1
arr = [1,2,3,4]
Existem 3 valores cuja diferença é igual ao valor alvo K: 2-1 = 1, 3-2 = 1, 4-3 = 1.
No caso, eu fiz dessa forma, até agora:
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int tamanhoLista = Integer.parseInt(st.nextToken());
int alvo = Integer.parseInt(st.nextToken());
ArrayList<Integer> lista = new ArrayList<Integer>();
ArrayList<Integer> resultado = new ArrayList<Integer>();
for (int i = 0; i < tamanhoLista; i++) {
st = new StringTokenizer(br.readLine());
lista.add(Integer.parseInt(st.nextToken()));
}
}
}
Mas eu não consigo pegar o valor alvo pra logica do segundo for, não sei oq estou fazendo errado, alguém pode me ajudar?
Porque está usando um StringTokenizer?
Apenas o BufferedReader é suficiente para ler entrada do usuário.
Em um outro exemplo que eu vi usava os dois… não tem necessidade?
Estou fazendo com o scanner, deu certo!
public static void main(String[] args) throws Exception {
Scanner ler = new Scanner(System.in);
int n;
System.out.printf("Informe o tamanho do lista:");
n = ler.nextInt();
ArrayList<Integer> entrada = new ArrayList<Integer>();
ArrayList<Integer> numerosPares = new ArrayList<Integer>();
ArrayList<Integer> numerosImpares = new ArrayList<Integer>();
System.out.println("Informe os numeros da lista:");
for (int i = 0; i < n; i++) {
ler = new Scanner(System.in);
entrada.add(ler.nextInt());
if (entrada.get(i) % 2 == 0) {
numerosPares.add(entrada.get(i));
} else {
numerosImpares.add(entrada.get(i));
}
}
Collections.sort(numerosPares);
Collections.sort(numerosImpares);
Collections.reverse(numerosImpares);
System.out.println("Numeros pares:");
for (int par : numerosPares) {
System.out.println(par);
}
System.out.println("Numeros impares:");
for (int impar : numerosImpares) {
System.out.println(impar);
}
ler.close();
}