Dynamic Array

Sort by

recency

|

56 Discussions

|

  • + 0 comments
    public static List<Integer> dynamicArray(int n, List<List<Integer>> queries) {
        List<Integer> result = new ArrayList<>();
        List<List<Integer>> sequenceList = new ArrayList<>();
        for(int i =0; i < n; i ++){
            sequenceList.add(new ArrayList<>());
        }
        Integer lastAnswer =0;
        for(List<Integer> query : queries){
            int index = 0;
            int type  = query.get(0);
            int x = query.get(1);
            int y = query.get(2);
    
            if(type == 1){
                index = (x ^ lastAnswer) % n;
                sequenceList.get(index).add(y);
            }else if (type == 2){
                index = (x ^ lastAnswer) % n;
                lastAnswer = sequenceList.get(index).get(y % sequenceList.get(index).size());
                result.add(lastAnswer);
            } 
        }
    return result;
    

    }

  • + 0 comments

    This is more about learning I think. It's not really a problem, For each query, 0 index will either 1 or 2. Base on that, we can condition to calculate y and append it.

  • + 0 comments

    Python 3 solution

    def dynamicArray(n: int, queries: list[list[int]]) -> list[int]:
        arr: list[list[int]] = [[] for __ in range(n)]
        lastAnswer = 0
        answers: list[int] = []
        save_answer = answers.append
        for query in queries:
            subarray = arr[(query[1] ^ lastAnswer) % n]
            if query[0] == 1:
                subarray.append(query[2])
                continue
            save_answer(lastAnswer := subarray[query[2] % len(subarray)])
        return answers
    
  • + 0 comments

    My rust solution:

    fn dynamicArray(n: i64, queries: &[Vec<i64>]) -> Vec<i64> {
        let mut arr = vec![Vec::<i64>::new(); n as usize];
        let mut last_answer = 0;
        let mut answer = Vec::new();
        
        for query in queries {
            if query[0] == 1 {
                let idx = (query[1].bitxor(last_answer) % n) as usize;
                arr[idx].push(query[2]);
            } else {
                let idx = (query[1].bitxor(last_answer) % n) as usize;
                last_answer = arr[idx][(query[2] % arr[idx].len() as i64) as usize];
                answer.push(last_answer);
            }
        }
        answer
    }
    
  • + 0 comments

    Where is the problem solving here? no problem to solve, no thinking, the problem is giving us the instructions to write ?