Skip to content

Commit 05bf3a1

Browse files
committed
feat: add solutions to lc problem: No.0624
No.0624.Maximum Distance in Arrays
1 parent ea3ae02 commit 05bf3a1

File tree

6 files changed

+242
-2
lines changed

6 files changed

+242
-2
lines changed

solution/0600-0699/0624.Maximum Distance in Arrays/README.md

Lines changed: 89 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,22 +35,110 @@
3535

3636
<!-- 这里可写通用的实现逻辑 -->
3737

38+
**方法一:维护最大值和最小值**
39+
40+
我们注意到,最大距离一定是两个数组中的一个最大值和另一个最小值之间的距离。因此,我们可以维护两个变量,分别表示当前数组中的最大值和最小值,然后遍历数组,更新最大距离,同时更新最大值和最小值。
41+
42+
遍历结束后,即可得到最大距离。
43+
44+
时间复杂度 $O(m)$,空间复杂度 $O(1)$。其中 $m$ 为数组的个数。
45+
3846
<!-- tabs:start -->
3947

4048
### **Python3**
4149

4250
<!-- 这里可写当前语言的特殊实现逻辑 -->
4351

4452
```python
45-
53+
class Solution:
54+
def maxDistance(self, arrays: List[List[int]]) -> int:
55+
ans = 0
56+
mi, mx = arrays[0][0], arrays[0][-1]
57+
for arr in arrays[1:]:
58+
a, b = abs(arr[0] - mx), abs(arr[-1] - mi)
59+
ans = max(ans, a, b)
60+
mi = min(mi, arr[0])
61+
mx = max(mx, arr[-1])
62+
return ans
4663
```
4764

4865
### **Java**
4966

5067
<!-- 这里可写当前语言的特殊实现逻辑 -->
5168

5269
```java
70+
class Solution {
71+
public int maxDistance(List<List<Integer>> arrays) {
72+
int ans = 0;
73+
int mi = arrays.get(0).get(0);
74+
int mx = arrays.get(0).get(arrays.get(0).size() - 1);
75+
for (int i = 1; i < arrays.size(); ++i) {
76+
var arr = arrays.get(i);
77+
int a = Math.abs(arr.get(0) - mx);
78+
int b = Math.abs(arr.get(arr.size() - 1) - mi);
79+
ans = Math.max(ans, Math.max(a, b));
80+
mi = Math.min(mi, arr.get(0));
81+
mx = Math.max(mx, arr.get(arr.size() - 1));
82+
}
83+
return ans;
84+
}
85+
}
86+
```
87+
88+
### **C++**
89+
90+
```cpp
91+
class Solution {
92+
public:
93+
int maxDistance(vector<vector<int>>& arrays) {
94+
int ans = 0;
95+
int mi = arrays[0][0], mx = arrays[0][arrays[0].size() - 1];
96+
for (int i = 1; i < arrays.size(); ++i) {
97+
auto& arr = arrays[i];
98+
int a = abs(arr[0] - mx), b = abs(arr[arr.size() - 1] - mi);
99+
ans = max({ans, a, b});
100+
mi = min(mi, arr[0]);
101+
mx = max(mx, arr[arr.size() - 1]);
102+
}
103+
return ans;
104+
}
105+
};
106+
```
53107
108+
### **Go**
109+
110+
```go
111+
func maxDistance(arrays [][]int) (ans int) {
112+
mi, mx := arrays[0][0], arrays[0][len(arrays[0])-1]
113+
for _, arr := range arrays[1:] {
114+
a, b := abs(arr[0]-mx), abs(arr[len(arr)-1]-mi)
115+
ans = max(ans, max(a, b))
116+
mi = min(mi, arr[0])
117+
mx = max(mx, arr[len(arr)-1])
118+
}
119+
return ans
120+
}
121+
122+
func abs(x int) int {
123+
if x < 0 {
124+
return -x
125+
}
126+
return x
127+
}
128+
129+
func max(a, b int) int {
130+
if a > b {
131+
return a
132+
}
133+
return b
134+
}
135+
136+
func min(a, b int) int {
137+
if a < b {
138+
return a
139+
}
140+
return b
141+
}
54142
```
55143

56144
### **...**

solution/0600-0699/0624.Maximum Distance in Arrays/README_EN.md

Lines changed: 81 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,93 @@
4545
### **Python3**
4646

4747
```python
48-
48+
class Solution:
49+
def maxDistance(self, arrays: List[List[int]]) -> int:
50+
ans = 0
51+
mi, mx = arrays[0][0], arrays[0][-1]
52+
for arr in arrays[1:]:
53+
a, b = abs(arr[0] - mx), abs(arr[-1] - mi)
54+
ans = max(ans, a, b)
55+
mi = min(mi, arr[0])
56+
mx = max(mx, arr[-1])
57+
return ans
4958
```
5059

5160
### **Java**
5261

5362
```java
63+
class Solution {
64+
public int maxDistance(List<List<Integer>> arrays) {
65+
int ans = 0;
66+
int mi = arrays.get(0).get(0);
67+
int mx = arrays.get(0).get(arrays.get(0).size() - 1);
68+
for (int i = 1; i < arrays.size(); ++i) {
69+
var arr = arrays.get(i);
70+
int a = Math.abs(arr.get(0) - mx);
71+
int b = Math.abs(arr.get(arr.size() - 1) - mi);
72+
ans = Math.max(ans, Math.max(a, b));
73+
mi = Math.min(mi, arr.get(0));
74+
mx = Math.max(mx, arr.get(arr.size() - 1));
75+
}
76+
return ans;
77+
}
78+
}
79+
```
80+
81+
### **C++**
82+
83+
```cpp
84+
class Solution {
85+
public:
86+
int maxDistance(vector<vector<int>>& arrays) {
87+
int ans = 0;
88+
int mi = arrays[0][0], mx = arrays[0][arrays[0].size() - 1];
89+
for (int i = 1; i < arrays.size(); ++i) {
90+
auto& arr = arrays[i];
91+
int a = abs(arr[0] - mx), b = abs(arr[arr.size() - 1] - mi);
92+
ans = max({ans, a, b});
93+
mi = min(mi, arr[0]);
94+
mx = max(mx, arr[arr.size() - 1]);
95+
}
96+
return ans;
97+
}
98+
};
99+
```
54100
101+
### **Go**
102+
103+
```go
104+
func maxDistance(arrays [][]int) (ans int) {
105+
mi, mx := arrays[0][0], arrays[0][len(arrays[0])-1]
106+
for _, arr := range arrays[1:] {
107+
a, b := abs(arr[0]-mx), abs(arr[len(arr)-1]-mi)
108+
ans = max(ans, max(a, b))
109+
mi = min(mi, arr[0])
110+
mx = max(mx, arr[len(arr)-1])
111+
}
112+
return ans
113+
}
114+
115+
func abs(x int) int {
116+
if x < 0 {
117+
return -x
118+
}
119+
return x
120+
}
121+
122+
func max(a, b int) int {
123+
if a > b {
124+
return a
125+
}
126+
return b
127+
}
128+
129+
func min(a, b int) int {
130+
if a < b {
131+
return a
132+
}
133+
return b
134+
}
55135
```
56136

57137
### **...**
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution {
2+
public:
3+
int maxDistance(vector<vector<int>>& arrays) {
4+
int ans = 0;
5+
int mi = arrays[0][0], mx = arrays[0][arrays[0].size() - 1];
6+
for (int i = 1; i < arrays.size(); ++i) {
7+
auto& arr = arrays[i];
8+
int a = abs(arr[0] - mx), b = abs(arr[arr.size() - 1] - mi);
9+
ans = max({ans, a, b});
10+
mi = min(mi, arr[0]);
11+
mx = max(mx, arr[arr.size() - 1]);
12+
}
13+
return ans;
14+
}
15+
};
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
func maxDistance(arrays [][]int) (ans int) {
2+
mi, mx := arrays[0][0], arrays[0][len(arrays[0])-1]
3+
for _, arr := range arrays[1:] {
4+
a, b := abs(arr[0]-mx), abs(arr[len(arr)-1]-mi)
5+
ans = max(ans, max(a, b))
6+
mi = min(mi, arr[0])
7+
mx = max(mx, arr[len(arr)-1])
8+
}
9+
return ans
10+
}
11+
12+
func abs(x int) int {
13+
if x < 0 {
14+
return -x
15+
}
16+
return x
17+
}
18+
19+
func max(a, b int) int {
20+
if a > b {
21+
return a
22+
}
23+
return b
24+
}
25+
26+
func min(a, b int) int {
27+
if a < b {
28+
return a
29+
}
30+
return b
31+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution {
2+
public int maxDistance(List<List<Integer>> arrays) {
3+
int ans = 0;
4+
int mi = arrays.get(0).get(0);
5+
int mx = arrays.get(0).get(arrays.get(0).size() - 1);
6+
for (int i = 1; i < arrays.size(); ++i) {
7+
var arr = arrays.get(i);
8+
int a = Math.abs(arr.get(0) - mx);
9+
int b = Math.abs(arr.get(arr.size() - 1) - mi);
10+
ans = Math.max(ans, Math.max(a, b));
11+
mi = Math.min(mi, arr.get(0));
12+
mx = Math.max(mx, arr.get(arr.size() - 1));
13+
}
14+
return ans;
15+
}
16+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
class Solution:
2+
def maxDistance(self, arrays: List[List[int]]) -> int:
3+
ans = 0
4+
mi, mx = arrays[0][0], arrays[0][-1]
5+
for arr in arrays[1:]:
6+
a, b = abs(arr[0] - mx), abs(arr[-1] - mi)
7+
ans = max(ans, a, b)
8+
mi = min(mi, arr[0])
9+
mx = max(mx, arr[-1])
10+
return ans

0 commit comments

Comments
 (0)