I am trying to solve the Dynamic Array problem of Hackerrank in C. I tried so many ways but all in vain. The best I could do is to clear 4 test cases. I am getting a segmentation error. Please help me find where am I doing wrong. It will be really helpful.
Question Link: https://www.hackerrank.com/challenges/dynamic-array/problem
We are supposed to complete the function. So here is my attempt:
int *dynamicArray(int n, int queries_rows, int queries_columns, int **queries,
int *result_count) {
*result_count = 0;
int *result = (int *)malloc(queries_rows * sizeof(int));
int i = 0, j = 0, y, x;
int lastAnswer = 0;
int **arr = (int **)malloc(n * sizeof(int *));
int *size = (int *)malloc(n * sizeof(int));
for (i = 0; i < n; i++) {
size[i] = 0;
}
for (i = 0; i < n; i++) {
arr[i] = (int *)malloc(n * sizeof(int));
}
for (i = 0; i < queries_rows; i++) {
x = queries[i][1];
y = queries[i][2];
if (queries[i][0] == 1) {
size[(x ^ lastAnswer) % n]++;
arr[(x ^ lastAnswer) % n][size[(x ^ lastAnswer) % n] - 1] = y;
} else {
lastAnswer = arr[(x ^ lastAnswer) % n][y % size[(x ^ lastAnswer) % n]];
printf("%d\n", lastAnswer);
(*result_count)++;
result[(*result_count) - 1] = lastAnswer;
}
}
result = (int *)realloc(result, (*result_count) * sizeof(int));
return result;
}