File tree Expand file tree Collapse file tree 1 file changed +30
-11
lines changed
MiniMoves_453/MiniMoves_453 Expand file tree Collapse file tree 1 file changed +30
-11
lines changed Original file line number Diff line number Diff line change @@ -35,20 +35,39 @@ static void Main(string[] args)
35
35
36
36
static int MiniMoves ( int [ ] nums )
37
37
{
38
- /*方法一*/
39
- // 将每次 n - 1个元素相加转化成
40
- // 每次将一个元素相减
41
- if ( nums . Length <= 1 )
42
- {
43
- return 0 ;
44
- }
45
- Array . Sort ( nums ) ;
38
+ ///*方法一*/
39
+ //// 将每次 n - 1个元素相加转化成
40
+ //// 每次将一个元素相减
41
+ //if (nums.Length <= 1)
42
+ //{
43
+ // return 0;
44
+ //}
45
+ //Array.Sort(nums);
46
+ //int sum = 0;
47
+ //for (int i = 1; i < nums.Length; i++)
48
+ //{
49
+ // sum += nums[i] - nums[0];
50
+ //}
51
+ //return sum;
52
+
53
+ /*方法二*/
54
+ // 假设:
55
+ // sum : 数组所有元素和
56
+ // n : 数组元素个数
57
+ // minNum : 数组中最小的元素的值
58
+ // x : 数组中元素相等时各元素的值
59
+ // m : 使数组相等至少需要移动的次数
60
+ // 于是有:sum + (n - 1) * m = n * x
61
+ // => x = miniNum + m
62
+ // => sum - miniNum * n = m
63
+ int min = nums [ 0 ] ;
46
64
int sum = 0 ;
47
- for ( int i = 1 ; i < nums . Length ; i ++ )
65
+ foreach ( var item in nums )
48
66
{
49
- sum += nums [ i ] - nums [ 0 ] ;
67
+ min = Math . Min ( min , item ) ;
68
+ sum += item ;
50
69
}
51
- return sum ;
70
+ return sum - min * nums . Length ;
52
71
}
53
72
}
54
73
}
You can’t perform that action at this time.
0 commit comments