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