Sort by

recency

|

3089 Discussions

|

  • + 0 comments

    public static List circularArrayRotation(List a, int k, List queries) { // Write your code here LinkedList list=new LinkedList<>(a); ArrayList ans=new ArrayList<>(); if(k>a.size()){ k=k%a.size(); for(int i=1;i<=k;i++){ int n=list.removeLast(); list.addFirst(n); System.out.println(list); } } else if(a.size()>k){ for(int i=0;i

  • + 0 comments

    public static List circularArrayRotation(List a, int k, List queries) { // Write your code here LinkedList list=new LinkedList<>(a); ArrayList ans=new ArrayList<>(); if(k>a.size()){ k=k%a.size(); for(int i=1;i<=k;i++){ int n=list.removeLast(); list.addFirst(n); System.out.println(list); } } else if(a.size()>k){ for(int i=0;i

  • + 0 comments

    Python Solution

    def circularArrayRotation(a, k, queries):
        for i in range(k):
            a.insert(0, a.pop())
        return (a[i] for i in queries)
    
  • + 0 comments

    Here is my c++ solution, you can watch the explanation here : https://youtu.be/MaT-4dnozJI

    Solution 1 O(n + m) :

    vector<int> circularArrayRotation(vector<int> a, int k, vector<int> queries) {
        vector<int> newArray(a.size()), result;
        for(int i = 0; i < a.size(); i++){
            newArray[(i + k) % a.size()] = a[i];
        }
        for(int i = 0; i < queries.size(); i++) result.push_back(newArray[queries[i]]);
        return result;
    }
    

    Solution 2 O(m) :

    vector<int> circularArrayRotation(vector<int> a, int k, vector<int> queries) {
        vector<int> result;
        for(int i = 0; i < queries.size(); i++) {
            int previousIndex = (queries[i] - k + a.size() * 100000 ) % a.size();
            result.push_back(a[previousIndex]);
        }
        return result;
    }
    
  • + 0 comments

    public static List circularArrayRotation(List a, int k, List queries) {

        for(int i=0 ; i<k ; i++){
            rotateArray(a);
        }
        List<Integer> res = new ArrayList<>();
        for(int q : queries){
            res.add(a.get(q));
        }
        return res;
    }
    
    public static void rotateArray(List<Integer> a){
    
        a.add(0,a.get(a.size()-1));
        a.remove(a.size()-1);   
    
    }