
Sponsored
Sponsored
This approach involves manually iterating over each element of the array using a for loop. For each element, we apply the provided function fn with the current element and its index as arguments. The result is then pushed into a new result array, which is returned at the end.
Time Complexity: O(n), where n is the number of elements in the array.
Space Complexity: O(n) for the resultant array.
1
The C solution defines a function transformArray that takes an array, its size, and a function pointer. It allocates memory for a new result array, iterates over the input array, and applies the function fn, storing results in result. Finally, it returns the result array.
Another approach is to use recursion to apply the function to each element in the array. We define a recursive function that processes elements by moving from the start to the end of the array, applying transformations and constructing the result array.
Time Complexity: O(n)
Space Complexity: O(n) for result array and O(n) for function call stack.
1#include <stdio.h>
2#include <stdlib.h>
3
4void transformArrayRecursive(int* arr, int* result, int index, int size, int (*fn)(int, int)) {
5 if (index >= size) return;
6 result[index] = fn(arr[index], index);
7 transformArrayRecursive(arr, result, index + 1, size, fn);
8}
9
10int plusOne(int n, int i) {
11 return n + 1;
12}
13
14int main() {
15 int arr[] = {1, 2, 3};
16 int arrSize = sizeof(arr) / sizeof(arr[0]);
17 int* result = (int*)malloc(arrSize * sizeof(int));
18 transformArrayRecursive(arr, result, 0, arrSize, plusOne);
19 for(int i = 0; i < arrSize; i++) {
20 printf("%d ", result[i]);
21 }
22 free(result);
23 return 0;
24}In the recursive C solution, a helper function transformArrayRecursive is created. It recursively calls itself to apply the function to each element, building up the result array.