最小操作次数使数组元素相等

🎯 问题描述(来源于LeetCode)

给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 。返回让数组所有元素相等的最小操作次数。

💻 代码实现

初始思路

1
2
3
4
5
6
7
8
9
10
11
12
class Solution: 
def minMoves(self, nums: List[int]) -> int:
l=len(nums)
acount=0
d=max(nums)-min(nums)
while d!=0:
d=max(nums)-min(nums)
nums.sort()
for i in range(l-1):
nums[i]+=d
acount+=d
return acount

优化后

1
2
3
4
5
6
7
8
9
class Solution:
def minMoves(self, nums: List[int]) -> int:
l=len(nums)
acount=0
d=min(nums)
for i in range(l):
count=nums[i]-d
acount+=count
return acount

📊 性能分析

提交结果

  • 运行时间:11ms击败23.70%
  • 内存消耗:18.39MB击败58.29%

复杂度验证

  • 时间复杂度:O(n)O(n)
  • 空间复杂度:O(1)O(1)