Primer – Buggy Array

The following codes are supposed to rotate an array by specified number of positions. However, they don’t do that. Please, find the bug. The codes are also saved here. Answer: ret[i] = A[(i + B) % A.size()]


C

int* rotateArray(int* A, int n1, int B, int *len) {
    int *ret = (int *)malloc(n1 * sizeof(int));
    *len = n1;
    int i;
    for (i = 0; i < n1; i++) ret[i] = A[i + B];
    return ret;
}

C++

vector<int> rotateArray(vector<int> &A, int B) {
    vector<int> ret; 
    for (int i = 0; i < A.size(); i++) {
        ret.push_back(A[i + B]);
    }
    return ret; 
}

Java

ArrayList<Integer> rotateArray(ArrayList<Integer> A, int B) {
    ArrayList<Integer> ret = new ArrayList<Integer>();
    for (int i = 0; i < A.size(); i++) {
        ret.add(A.get(i + B));
    }
    return ret;
}

Python

def rotateArray(self, a, b):
    ret = []
    for i in xrange(len(a)):
        ret.append(a[i + b])
    return ret