Hackerrank Java List Solution

Hackerrank Java List Solution

For this problem, we have  types of queries you can perform on a List:

Insert  at index :
Insert x y

Delete the element at index :
Delete x

Given a list, , of  integers, perform  queries on the list. Once all queries are completed, print the modified list as a single line of space-separated integers.

Input Format

The first line contains an integer,  (the initial number of elements in ).
The second line contains  space-separated integers describing .
The third line contains an integer,  (the number of queries).
The  subsequent lines describe the queries, and each query is described over two lines:

  • If the first line of a query contains the String Insert, then the second line contains two space separated integers , and the value  must be inserted into  at index .
  • If the first line of a query contains the String Delete, then the second line contains index , whose element must be deleted from .

Constraints



  • Each element in  is a 32-bit integer.

Output Format

Print the updated list  as a single line of space-separated integers.

Sample Input

5
12 0 1 78 12
2
Insert
5 23
Delete
0

Sample Output

0 1 78 12 23

Explanation

Insert  23 at index .

Delete the element at index .

Having performed all  queries, we print  as a single line of space-separated integers.

Solution in java8

Approach 1.

import java.io.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
        Scanner scan=new Scanner(System.in);
        int n=scan.nextInt();
        List<Integer> list=new ArrayList<Integer>();
        for(int i=0;i<n;i++)
            {list.add(scan.nextInt());}
        n=scan.nextInt();
        for(int i=0;i<n;i++)
        {String Q=scan.next();
         if(Q.compareTo("Insert")==0)
         {list.add(scan.nextInt(),scan.nextInt());
         }
         else
             {list.remove(scan.nextInt());}
        }
        for(int i:list)
            System.out.print(i+ " ");
    }
}

Approach 2.

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Solution {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int elements = scanner.nextInt();
        List<Integer> list = new ArrayList<>(elements);
        for (int i = 0; i < elements; i++) {
            list.add(scanner.nextInt());
        }
        int queries = scanner.nextInt();
        for (int i = 0; i < queries; i++) {
            String query = scanner.next();
            if ("Insert".equals(query)) {
                 int index = scanner.nextInt();
                int value = scanner.nextInt();
                list.add(index, value);
            } else {
               int index = scanner.nextInt();
                list.remove(index);
            }
        }
        list.stream().forEach(n -> System.out.print(n +" "));
        scanner.close();
    }
}

Approach 3.

import java.io.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
            Scanner scan = new Scanner(System.in);
        int x = scan.nextInt();

      List <Integer> myList = new ArrayList<Integer>(x);
        for (int i =0; i< x; i++)
        {
            myList.add(scan.nextInt());

        }
        int numQ= scan.nextInt();

        for (int i=0; i<numQ; i++)
        {
            if (scan.next().equalsIgnoreCase("insert")){

                int pos = scan.nextInt();
                int num = scan.nextInt();

                myList.add(pos,num);



            }
            else {

                myList.remove(scan.nextInt());
            }


        }

        for (Integer i : myList)
                   System.out.print(i+" ");


    
    }
}