File tree 6 files changed +235
-2
lines changed
solution/1200-1299/1200.Minimum Absolute Difference
6 files changed +235
-2
lines changed Original file line number Diff line number Diff line change 43
43
44
44
<!-- 这里可写通用的实现逻辑 -->
45
45
46
+ ** 方法一:排序**
47
+
48
+ 时间复杂度 $O(nlogn)$,其中 $n$ 表示 $arr$ 的长度。
49
+
46
50
<!-- tabs:start -->
47
51
48
52
### ** Python3**
49
53
50
54
<!-- 这里可写当前语言的特殊实现逻辑 -->
51
55
52
56
``` 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
54
70
```
55
71
56
72
### ** Java**
57
73
58
74
<!-- 这里可写当前语言的特殊实现逻辑 -->
59
75
60
76
``` 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
+ ```
61
125
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
+ }
62
145
```
63
146
64
147
### ** ...**
Original file line number Diff line number Diff line change 51
51
### ** Python3**
52
52
53
53
``` 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
55
67
```
56
68
57
69
### ** Java**
58
70
59
71
``` 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
+ ```
60
120
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
+ }
61
140
```
62
141
63
142
### ** ...**
Original file line number Diff line number Diff line change
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 number Diff line number Diff line change
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 number Diff line number Diff line change
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 number Diff line number Diff line change
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
You can’t perform that action at this time.
0 commit comments