Skip to content

Commit cfe9665

Browse files
committed
feat: add solutions to lc problem: No.1200
No.1200.Minimum Absolute Difference
1 parent 9d5c67a commit cfe9665

File tree

6 files changed

+235
-2
lines changed

6 files changed

+235
-2
lines changed

solution/1200-1299/1200.Minimum Absolute Difference/README.md

+84-1
Original file line numberDiff line numberDiff line change
@@ -43,22 +43,105 @@
4343

4444
<!-- 这里可写通用的实现逻辑 -->
4545

46+
**方法一:排序**
47+
48+
时间复杂度 $O(nlogn)$,其中 $n$ 表示 $arr$ 的长度。
49+
4650
<!-- tabs:start -->
4751

4852
### **Python3**
4953

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

5256
```python
53-
57+
class Solution:
58+
def minimumAbsDifference(self, arr: List[int]) -> List[List[int]]:
59+
arr.sort()
60+
ans = []
61+
mi = inf
62+
for a, b in pairwise(arr):
63+
d = b - a
64+
if d < mi:
65+
ans = [(a, b)]
66+
mi = d
67+
elif d == mi:
68+
ans.append((a, b))
69+
return ans
5470
```
5571

5672
### **Java**
5773

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

6076
```java
77+
class Solution {
78+
public List<List<Integer>> minimumAbsDifference(int[] arr) {
79+
Arrays.sort(arr);
80+
List<List<Integer>> ans = new ArrayList<>();
81+
int n = arr.length;
82+
int mi = Integer.MAX_VALUE;
83+
for (int i = 0; i < n - 1; ++i) {
84+
int a = arr[i], b = arr[i + 1];
85+
int d = b - a;
86+
if (d < mi) {
87+
ans.clear();
88+
ans.add(Arrays.asList(a, b));
89+
mi = d;
90+
} else if (d == mi) {
91+
ans.add(Arrays.asList(a, b));
92+
}
93+
}
94+
return ans;
95+
}
96+
}
97+
```
98+
99+
### **C++**
100+
101+
```cpp
102+
class Solution {
103+
public:
104+
vector<vector<int>> minimumAbsDifference(vector<int>& arr) {
105+
sort(arr.begin(), arr.end());
106+
int mi = INT_MAX;
107+
int n = arr.size();
108+
vector<vector<int>> ans;
109+
for (int i = 0; i < n - 1; ++i)
110+
{
111+
int a = arr[i], b = arr[i + 1];
112+
int d = b - a;
113+
if (d < mi)
114+
{
115+
mi = d;
116+
ans.clear();
117+
ans.push_back({a, b});
118+
}
119+
else if (d == mi) ans.push_back({a, b});
120+
}
121+
return ans;
122+
}
123+
};
124+
```
61125
126+
### **Go**
127+
128+
```go
129+
func minimumAbsDifference(arr []int) [][]int {
130+
sort.Ints(arr)
131+
mi := math.MaxInt32
132+
var ans [][]int
133+
for i, a := range arr[:len(arr)-1] {
134+
b := arr[i+1]
135+
d := b - a
136+
if d < mi {
137+
mi = d
138+
ans = [][]int{[]int{a, b}}
139+
} else if d == mi {
140+
ans = append(ans, []int{a, b})
141+
}
142+
}
143+
return ans
144+
}
62145
```
63146

64147
### **...**

solution/1200-1299/1200.Minimum Absolute Difference/README_EN.md

+80-1
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,92 @@
5151
### **Python3**
5252

5353
```python
54-
54+
class Solution:
55+
def minimumAbsDifference(self, arr: List[int]) -> List[List[int]]:
56+
arr.sort()
57+
ans = []
58+
mi = inf
59+
for a, b in pairwise(arr):
60+
d = b - a
61+
if d < mi:
62+
ans = [(a, b)]
63+
mi = d
64+
elif d == mi:
65+
ans.append((a, b))
66+
return ans
5567
```
5668

5769
### **Java**
5870

5971
```java
72+
class Solution {
73+
public List<List<Integer>> minimumAbsDifference(int[] arr) {
74+
Arrays.sort(arr);
75+
List<List<Integer>> ans = new ArrayList<>();
76+
int n = arr.length;
77+
int mi = Integer.MAX_VALUE;
78+
for (int i = 0; i < n - 1; ++i) {
79+
int a = arr[i], b = arr[i + 1];
80+
int d = b - a;
81+
if (d < mi) {
82+
ans.clear();
83+
ans.add(Arrays.asList(a, b));
84+
mi = d;
85+
} else if (d == mi) {
86+
ans.add(Arrays.asList(a, b));
87+
}
88+
}
89+
return ans;
90+
}
91+
}
92+
```
93+
94+
### **C++**
95+
96+
```cpp
97+
class Solution {
98+
public:
99+
vector<vector<int>> minimumAbsDifference(vector<int>& arr) {
100+
sort(arr.begin(), arr.end());
101+
int mi = INT_MAX;
102+
int n = arr.size();
103+
vector<vector<int>> ans;
104+
for (int i = 0; i < n - 1; ++i)
105+
{
106+
int a = arr[i], b = arr[i + 1];
107+
int d = b - a;
108+
if (d < mi)
109+
{
110+
mi = d;
111+
ans.clear();
112+
ans.push_back({a, b});
113+
}
114+
else if (d == mi) ans.push_back({a, b});
115+
}
116+
return ans;
117+
}
118+
};
119+
```
60120
121+
### **Go**
122+
123+
```go
124+
func minimumAbsDifference(arr []int) [][]int {
125+
sort.Ints(arr)
126+
mi := math.MaxInt32
127+
var ans [][]int
128+
for i, a := range arr[:len(arr)-1] {
129+
b := arr[i+1]
130+
d := b - a
131+
if d < mi {
132+
mi = d
133+
ans = [][]int{[]int{a, b}}
134+
} else if d == mi {
135+
ans = append(ans, []int{a, b})
136+
}
137+
}
138+
return ans
139+
}
61140
```
62141

63142
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Solution {
2+
public:
3+
vector<vector<int>> minimumAbsDifference(vector<int>& arr) {
4+
sort(arr.begin(), arr.end());
5+
int mi = INT_MAX;
6+
int n = arr.size();
7+
vector<vector<int>> ans;
8+
for (int i = 0; i < n - 1; ++i)
9+
{
10+
int a = arr[i], b = arr[i + 1];
11+
int d = b - a;
12+
if (d < mi)
13+
{
14+
mi = d;
15+
ans.clear();
16+
ans.push_back({a, b});
17+
}
18+
else if (d == mi) ans.push_back({a, b});
19+
}
20+
return ans;
21+
}
22+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
func minimumAbsDifference(arr []int) [][]int {
2+
sort.Ints(arr)
3+
mi := math.MaxInt32
4+
var ans [][]int
5+
for i, a := range arr[:len(arr)-1] {
6+
b := arr[i+1]
7+
d := b - a
8+
if d < mi {
9+
mi = d
10+
ans = [][]int{[]int{a, b}}
11+
} else if d == mi {
12+
ans = append(ans, []int{a, b})
13+
}
14+
}
15+
return ans
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution {
2+
public List<List<Integer>> minimumAbsDifference(int[] arr) {
3+
Arrays.sort(arr);
4+
List<List<Integer>> ans = new ArrayList<>();
5+
int n = arr.length;
6+
int mi = Integer.MAX_VALUE;
7+
for (int i = 0; i < n - 1; ++i) {
8+
int a = arr[i], b = arr[i + 1];
9+
int d = b - a;
10+
if (d < mi) {
11+
ans.clear();
12+
ans.add(Arrays.asList(a, b));
13+
mi = d;
14+
} else if (d == mi) {
15+
ans.add(Arrays.asList(a, b));
16+
}
17+
}
18+
return ans;
19+
}
20+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution:
2+
def minimumAbsDifference(self, arr: List[int]) -> List[List[int]]:
3+
arr.sort()
4+
ans = []
5+
mi = inf
6+
for a, b in pairwise(arr):
7+
d = b - a
8+
if d < mi:
9+
ans = [(a, b)]
10+
mi = d
11+
elif d == mi:
12+
ans.append((a, b))
13+
return ans

0 commit comments

Comments
 (0)