File tree 6 files changed +173
-6
lines changed
solution/0400-0499/0462.Minimum Moves to Equal Array Elements II
6 files changed +173
-6
lines changed Original file line number Diff line number Diff line change 27
27
28
28
<!-- 这里可写通用的实现逻辑 -->
29
29
30
+ ** 方法一:排序 + 中位数**
31
+
32
+ ** 方法二:排序 + 前缀和**
33
+
34
+ 以上两种方法的时间复杂度均为 O(nlogn)。
35
+
30
36
<!-- tabs:start -->
31
37
32
38
### ** Python3**
33
39
34
40
<!-- 这里可写当前语言的特殊实现逻辑 -->
35
41
36
42
``` python
43
+ class Solution :
44
+ def minMoves2 (self , nums : List[int ]) -> int :
45
+ nums.sort()
46
+ k = nums[len (nums) >> 1 ]
47
+ return sum (abs (v - k) for v in nums)
48
+ ```
37
49
50
+ ``` python
51
+ class Solution :
52
+ def minMoves2 (self , nums : List[int ]) -> int :
53
+ def move (i ):
54
+ v = nums[i]
55
+ a = v * i - s[i]
56
+ b = s[- 1 ] - s[i + 1 ] - v * (n - i - 1 )
57
+ return a + b
58
+
59
+ nums.sort()
60
+ s = [0 ] + list (accumulate(nums))
61
+ n = len (nums)
62
+ return min (move(i) for i in range (n))
38
63
```
39
64
40
65
### ** Java**
41
66
42
67
<!-- 这里可写当前语言的特殊实现逻辑 -->
43
68
44
69
``` java
70
+ class Solution {
71
+ public int minMoves2 (int [] nums ) {
72
+ Arrays . sort(nums);
73
+ int k = nums[nums. length >> 1 ];
74
+ int ans = 0 ;
75
+ for (int v : nums) {
76
+ ans += Math . abs(v - k);
77
+ }
78
+ return ans;
79
+ }
80
+ }
81
+ ```
82
+
83
+ ### ** C++**
84
+
85
+ ``` cpp
86
+ class Solution {
87
+ public:
88
+ int minMoves2(vector<int >& nums) {
89
+ sort(nums.begin(), nums.end());
90
+ int k = nums[ nums.size() >> 1] ;
91
+ int ans = 0;
92
+ for (int& v : nums) ans += abs(v - k);
93
+ return ans;
94
+ }
95
+ };
96
+ ```
45
97
98
+ ### **Go**
99
+
100
+ ```go
101
+ func minMoves2(nums []int) int {
102
+ sort.Ints(nums)
103
+ k := nums[len(nums)>>1]
104
+ ans := 0
105
+ for _, v := range nums {
106
+ ans += abs(v - k)
107
+ }
108
+ return ans
109
+ }
110
+
111
+ func abs(x int) int {
112
+ if x < 0 {
113
+ return -x
114
+ }
115
+ return x
116
+ }
46
117
```
47
118
48
119
### ** ...**
Original file line number Diff line number Diff line change @@ -44,13 +44,78 @@ Only two moves are needed (remember each move increments or decrements one eleme
44
44
### ** Python3**
45
45
46
46
``` python
47
+ class Solution :
48
+ def minMoves2 (self , nums : List[int ]) -> int :
49
+ nums.sort()
50
+ k = nums[len (nums) >> 1 ]
51
+ return sum (abs (v - k) for v in nums)
52
+ ```
47
53
54
+ ``` python
55
+ class Solution :
56
+ def minMoves2 (self , nums : List[int ]) -> int :
57
+ def move (i ):
58
+ v = nums[i]
59
+ a = v * i - s[i]
60
+ b = s[- 1 ] - s[i + 1 ] - v * (n - i - 1 )
61
+ return a + b
62
+
63
+ nums.sort()
64
+ s = [0 ] + list (accumulate(nums))
65
+ n = len (nums)
66
+ return min (move(i) for i in range (n))
48
67
```
49
68
50
69
### ** Java**
51
70
52
71
``` java
72
+ class Solution {
73
+ public int minMoves2 (int [] nums ) {
74
+ Arrays . sort(nums);
75
+ int k = nums[nums. length >> 1 ];
76
+ int ans = 0 ;
77
+ for (int v : nums) {
78
+ ans += Math . abs(v - k);
79
+ }
80
+ return ans;
81
+ }
82
+ }
83
+ ```
84
+
85
+ ### ** C++**
86
+
87
+ ``` cpp
88
+ class Solution {
89
+ public:
90
+ int minMoves2(vector<int >& nums) {
91
+ sort(nums.begin(), nums.end());
92
+ int k = nums[ nums.size() >> 1] ;
93
+ int ans = 0;
94
+ for (int& v : nums) ans += abs(v - k);
95
+ return ans;
96
+ }
97
+ };
98
+ ```
53
99
100
+ ### **Go**
101
+
102
+ ```go
103
+ func minMoves2(nums []int) int {
104
+ sort.Ints(nums)
105
+ k := nums[len(nums)>>1]
106
+ ans := 0
107
+ for _, v := range nums {
108
+ ans += abs(v - k)
109
+ }
110
+ return ans
111
+ }
112
+
113
+ func abs(x int) int {
114
+ if x < 0 {
115
+ return -x
116
+ }
117
+ return x
118
+ }
54
119
```
55
120
56
121
### ** ...**
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public:
3
+ int minMoves2 (vector<int >& nums) {
4
+ sort (nums.begin (), nums.end ());
5
+ int k = nums[nums.size () >> 1 ];
6
+ int ans = 0 ;
7
+ for (int & v : nums) ans += abs (v - k);
8
+ return ans;
9
+ }
10
+ };
Original file line number Diff line number Diff line change
1
+ func minMoves2 (nums []int ) int {
2
+ sort .Ints (nums )
3
+ k := nums [len (nums )>> 1 ]
4
+ ans := 0
5
+ for _ , v := range nums {
6
+ ans += abs (v - k )
7
+ }
8
+ return ans
9
+ }
10
+
11
+ func abs (x int ) int {
12
+ if x < 0 {
13
+ return - x
14
+ }
15
+ return x
16
+ }
Original file line number Diff line number Diff line change 1
1
class Solution {
2
2
public int minMoves2 (int [] nums ) {
3
3
Arrays .sort (nums );
4
- int k = nums [nums .length / 2 ];
5
- int res = 0 ;
6
- for (int num : nums ) {
7
- res += Math .abs (num - k );
4
+ int k = nums [nums .length >> 1 ];
5
+ int ans = 0 ;
6
+ for (int v : nums ) {
7
+ ans += Math .abs (v - k );
8
8
}
9
- return res ;
9
+ return ans ;
10
10
}
11
- }
11
+ }
Original file line number Diff line number Diff line change
1
+ class Solution :
2
+ def minMoves2 (self , nums : List [int ]) -> int :
3
+ nums .sort ()
4
+ k = nums [len (nums ) >> 1 ]
5
+ return sum (abs (v - k ) for v in nums )
You can’t perform that action at this time.
0 commit comments