• + 0 comments

    My Java solution with o(n) time complexity and o(n) space complexity:

    public static List<Integer> dynamicArray(int n, List<List<Integer>> queries) {
            // Write your code here
            List<List<Integer>> arr = new ArrayList<>();
            IntStream.range(0, n).forEach(i -> arr.add(new ArrayList<>()));
            
            int lastAnswer = 0;
            List<Integer> answers = new ArrayList<>();
            for(List<Integer> query : queries){
                int queryType = query.get(0);
                int x = query.get(1);
                int y = query.get(2);
                int idx = (x ^ lastAnswer) % n;
                
                switch(queryType){
                    case 1:
                        arr.get(idx).add(y);
                        break;
                    case 2:
                        lastAnswer = arr.get(idx).get(y % arr.get(idx).size());
                        answers.add(lastAnswer);
                        break;
                }
            }
            return answers;
        }