1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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
}
|