diff options
Diffstat (limited to 'max_distance_arr.c')
-rw-r--r-- | max_distance_arr.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/max_distance_arr.c b/max_distance_arr.c new file mode 100644 index 0000000..40cc5a2 --- /dev/null +++ b/max_distance_arr.c @@ -0,0 +1,29 @@ +// 624. Maximum Distance in Arrays +#include "leetcode.h" + +/* + * you are given 'm' arrays where each array is sorted in ascending order. you + * can pick up two integers from two different arrays (each array picks one) and + * calculate the distance. we define the distance between two integer 'a' and + * 'b' to be their absolute idfferent '|a - b|'. return the maximum distance + */ + +int maxDistance(int **arrays, int arraysSize, int *arraysColSize) { + if (!arraysSize) + return -1; + int min = arrays[0][0], max = arrays[0][arraysColSize[0] - 1], ans = 0; + for (int i = 1; i < arraysSize; i++) { + int curr = fmax(arrays[i][arraysColSize[i] - 1] - min, max - arrays[i][0]); + ans = fmax(max, curr); + min = fmin(min, arrays[i][0]); + max = fmax(max, arrays[i][arraysColSize[i] - 1]); + } + return ans; +} + +int main() { + int a1[][3] = {{1, 2, 3}, {4, 5}, {1, 2, 3}}, a2[][2] = {{1}, {1}}; + int acs1[] = {3, 3, 2}, acs2[] = {1, 1}; + printf("%d\n", maxDistance((int **)a1, ARRAY_SIZE(a1), acs1)); // expect: 4 + printf("%d\n", maxDistance((int **)a2, ARRAY_SIZE(a2), acs2)); // expect: 0 +} |