Skip to main content

Java Dequeue

Problem
In computer science, a double-ended queue (dequeue, often abbreviated to deque, pronounced deck) is an abstract data type that generalizes a queue, for which elements can be added to or removed from either the front (head) or back (tail).

Deque interfaces can be implemented using various types of collections such as LinkedList or ArrayDeque classes. For example, deque can be declared as:

Deque deque = new LinkedList<>();
or
Deque deque = new ArrayDeque<>();

In this problem, you are given NN integers. You need to find the maximum number of unique integers among all the possible contiguous subarrays of size MM.

Note: Time limit is 33 second for this problem.

Input Format

The first line of input contains two integers NN and MM: representing the total number of integers and the size of the subarray, respectively. The next line contains NN space separated integers.

Constraints

1≤N≤1000001≤N≤100000
1≤M≤1000001≤M≤100000
M≤NM≤N
The numbers in the array will range between [0,10000000][0,10000000].

Output Format

Print the maximum number of unique integers among all possible contiguous subarrays of size MM.

Sample Input

6 3
5 3 5 2 3 2

Sample Output

3

Explanation

In the sample testcase, there are 4 subarrays of contiguous numbers.

s1=⟨5,3,5⟩s1=⟨5,3,5⟩ - Has 22 unique numbers.

s2=⟨3,5,2⟩s2=⟨3,5,2⟩ - Has 33 unique numbers.

s3=⟨5,2,3⟩s3=⟨5,2,3⟩ - Has 33 unique numbers.

s4=⟨2,3,2⟩s4=⟨2,3,2⟩ - Has 22 unique numbers.

In these subarrays, there are 2,3,3,22,3,3,2 unique numbers, respectively. The maximum amount of unique numbers among all possible contiguous subarrays is 33.

Solution
    import java.util.*;
    public class test {
       public static void main(String[] args){
           
    Scanner in = new Scanner(System.in);
    Deque q    = new ArrayDeque<Integer>();
    int []a = new int[10000001];
    int i = 0, n = in.nextInt(), m = in.nextInt();
    int r = 0, c = 0;
           
    for(;i<m;i++){
    int x = in.nextInt();
    if(a[x]==0){c++;if(r<c)r=c;}
    a[x]++;
    q.addLast(x);
    }
           
    for(;i<n;i++){
    if(a[(int)q.getFirst()]==1)c--;
    a[(int)q.getFirst()]--;
    q.removeFirst();
    int x=in.nextInt();
    if(a[x]==0){c++;if(r<c)r=c;}
    a[x]++;
    q.addLast(x);
    }
           
    System.out.println(r);
    }
    }

Comments

Popular posts from this blog

Transform Ubuntu into Xubuntu

Installation 1. Open the terminal by Ctrl+Alt+T     and type    sudo apt-get install xubuntu-desktop gksu leafpad synaptic         2. Type your password & Press Enter. Now an intensive operation is being launched. Simply wait to complete the whole process. Login To Xubuntu 1. After completing the installation logout ubuntu. Note: logout not restart or shutdown. 2. In the login window click on the ubuntu logo, next to your userName & select Xubuntu Sesion 3. Enter your password and Now the Xubuntu desktop appears. :) The next thing is to clean up. Clean Up 1. Now its time to clean up, inorder to prevent system pollution problems. Note: The clean up will remove as much as possible ubuntu's desktop environment Unity. So after that you can't use Unity. 2. Open terminal by Ctrl+Alt+T and type the following  sudo apt-get remove nautilus gnome-power-manager gnome-screensaver gnome-termina*...

PostgreSQL :: open-source relational database management system (RDBMS)

 PostgreSQL also known as Postgres, is a free and open-source relational database management system (RDBMS) emphasizing extensibility and SQL compliance.  PostgreSQL features transactions with ACID properties, automatically updatable views, materialized views, triggers, foreign keys, and stored procedures. It is designed to handle a range of workloads, from single machines to data warehouses or Web services with many concurrent users. PostgreSQL manages concurrency through multiversion concurrency control (MVCC), which gives each transaction a "snapshot" of the database, allowing changes to be made without affecting other transactions.  PostgreSQL provides an asynchronous messaging system that is accessed through the NOTIFY, LISTEN and UNLISTEN commands. PostgreSQL includes built-in support for regular B-tree and hash table indexes, and four index access methods: generalized search trees (GiST), generalized inverted indexes (GIN), Space-Partitioned GiST (SP-GiST) and Bloc...

15 Free Feature Rich Bootstrap Admin Templates

1. Charisma Charisma  comes with 9 different skins/themes to suit your style and application type. It is clean, easy to use and contains over 1000 icons and 15 plugins. It is also filled with numerous UI elements like star rating, pop over, custom tooltip, alerts, Ajax loaders, notifications and much more.  2. Siminta Siminta  comes with a large collection of plugins and UI components that help you make your work easy. All codes are self-explanatory (with comments) and the overall structure is easy to customize. It is free for personal as well as commercial use. 3. Metis Metis  is a free Twitter Bootstrap template with various layouts, components, forms, tables, maps, charts and menu level. It is also equipped with file manager, maps, error page structure, grid system and login page.  4. Hierapolis Yet another private  admin template  based on Twitter Bootstrap 3. It consists of beautiful fo...