HackerRank #40 | Java Dequeue | 🇧🇷

Esse exercício recebe dois inputs iniciais: um integer N, relativo à quantidade de números em um array, e um integer M, relativo a um subarray deslocável que fará a “varredura” dentro do array principal.

N = quantidade de números do array
M = tamanh…


This content originally appeared on DEV Community and was authored by Beatriz Maciel

Esse exercício recebe dois inputs iniciais: um integer N, relativo à quantidade de números em um array, e um integer M, relativo a um subarray deslocável que fará a "varredura" dentro do array principal.

HackerRank Dequeue Imagem

N = quantidade de números do array
M = tamanho do subarray que varrerá o array principal

Dessa forma, os arrays estruturados com M = 3 serão:

[5, 3, 5]
. . . [3, 5, 2]
. . . . . [5, 2, 3]
. . . . . . . [2, 3, 2]

Como todos os subarrays precisam ter M números, nesse caso esses serão os subarrays possíveis.

Depois disso, precisamos que o programa contabilize qual é o máximo de números únicos existentes em um subarray de tamanho M.

[5, 3, 5] = 2 números únicos
[3, 5, 2] = 3 números únicos
[5, 2, 3] = 3 números únicos
[2, 3, 2] = 2 números únicos

Sendo assim, o máximo de números únicos em um subarray será 3. Esse precisa ser o output.

Vamos para a solução, dividida em partes:

  • Primeiro declaramos um Array de Integers de nome deque.
  • Declaramos também um Hashset de Integers de nome hashset. Lembrando que um Hashset não repete números, e isso vai ser útil para que possamos contabilizar números únicos.
  • Depois escaneamos os ints N, M e maxUniqueIntegers (nossa resposta final)
  • Dentro de uma iteração, pegaremos, através de um input, os números do array. Lembrando: a quantidade de números do array é delimitada por N, mas será inserida pelo usuário.
  • Vamos adicionar todos os números do input no Array deque e no Hashset hashset através do .add
  • Faremos uma condicional que diz que nosso Array deque, tendo o mesmo tamanho de M, fará com que o hashset receba o maxUniqueIntegers para ir contabilizando as entradas de números únicos. Como o hashset só permite números únicos, o maxUniqueIntegers também só receberá a quantidade de números únicos.
  • Depois, declararemos uma variável firstQueueNumber que fará a remoção do primeiro número do nosso array deque. A propriedade .remove sempre remove o primeiro elemento, ou o elemento que tem a menor posição i (leia mais sobre isso nas referências)
  • Por fim, imprimimos o maxUniqueNumbers, com a quantidade de números únicos.

O código final fica assim:

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Deque<Integer> deque = new ArrayDeque<>();
        HashSet<Integer> hashset = new HashSet<>();

        int n = in.nextInt();
        int m = in.nextInt();
        int maxUniqueIntegers = 0;

        for (int i = 0; i < n; i++) {
            int num = in.nextInt();

            deque.add(num);
            hashset.add(num);

            if (deque.size() == m) {
                if (hashset.size() > maxUniqueIntegers) {
                    maxUniqueIntegers = hashset.size();
                }
                int firstQueueNumber = deque.remove();
                if (!deque.contains(firstQueueNumber)) {
                    hashset.remove(firstQueueNumber);
                } 
            }
        }

        System.out.println(maxUniqueIntegers);
    }
}

=======

Referências:

ArrayList : Oracle

============

Essa publicação faz parte de uma série de exercícios resolvidos em Java no HackerRank. Acesse a série completa:


This content originally appeared on DEV Community and was authored by Beatriz Maciel


Print Share Comment Cite Upload Translate Updates
APA

Beatriz Maciel | Sciencx (2021-11-22T20:35:53+00:00) HackerRank #40 | Java Dequeue | 🇧🇷. Retrieved from https://www.scien.cx/2021/11/22/hackerrank-40-java-dequeue-%f0%9f%87%a7%f0%9f%87%b7/

MLA
" » HackerRank #40 | Java Dequeue | 🇧🇷." Beatriz Maciel | Sciencx - Monday November 22, 2021, https://www.scien.cx/2021/11/22/hackerrank-40-java-dequeue-%f0%9f%87%a7%f0%9f%87%b7/
HARVARD
Beatriz Maciel | Sciencx Monday November 22, 2021 » HackerRank #40 | Java Dequeue | 🇧🇷., viewed ,<https://www.scien.cx/2021/11/22/hackerrank-40-java-dequeue-%f0%9f%87%a7%f0%9f%87%b7/>
VANCOUVER
Beatriz Maciel | Sciencx - » HackerRank #40 | Java Dequeue | 🇧🇷. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2021/11/22/hackerrank-40-java-dequeue-%f0%9f%87%a7%f0%9f%87%b7/
CHICAGO
" » HackerRank #40 | Java Dequeue | 🇧🇷." Beatriz Maciel | Sciencx - Accessed . https://www.scien.cx/2021/11/22/hackerrank-40-java-dequeue-%f0%9f%87%a7%f0%9f%87%b7/
IEEE
" » HackerRank #40 | Java Dequeue | 🇧🇷." Beatriz Maciel | Sciencx [Online]. Available: https://www.scien.cx/2021/11/22/hackerrank-40-java-dequeue-%f0%9f%87%a7%f0%9f%87%b7/. [Accessed: ]
rf:citation
» HackerRank #40 | Java Dequeue | 🇧🇷 | Beatriz Maciel | Sciencx | https://www.scien.cx/2021/11/22/hackerrank-40-java-dequeue-%f0%9f%87%a7%f0%9f%87%b7/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.