• + 38 comments

    Java solution - passes 100% of test cases

    Use a LinkedList instead of an ArrayList when adding/removing items often since it will be faster (ArrayList often needs to shift O(n) elements after an add or remove, which is slow).

    From my HackerRank solutions.

    import java.util.Scanner;
    import java.util.LinkedList;
    
    public class Solution {
        public static void main(String[] args) {
            /* Create and fill Linked List of Integers */
            Scanner scan = new Scanner(System.in);
            int N = scan.nextInt();
            LinkedList<Integer> list = new LinkedList<>();
            for (int i = 0; i < N; i++) {
                int value = scan.nextInt();
                list.add(value);
            }
            
            /* Perfrom queries on Linked List */
            int Q = scan.nextInt();
            for (int i = 0; i < Q; i++) {
                String action = scan.next();
                if (action.equals("Insert")) {
                    int index = scan.nextInt();
                    int value = scan.nextInt();
                    list.add(index, value);
                } else { // "Delete"
                    int index = scan.nextInt();
                    list.remove(index);
                }
            }
            scan.close();
            
            /* Print our updated Linked List */
            for (Integer num : list) {
                System.out.print(num + " ");
            }
        }
    }
    

    Let me know if you have any questions.