数学
不会,来自官方题解(. - 力扣(LeetCode))。
class Solution:
def minMoves(self, nums: List[int]) -> int:
# 数学
# 转化为对立事件
# 考虑相对变化,一元素减一
mn = min(nums)
ans = 0
for x in nums:
ans += x-mn
return ans
在遍历过程中动态寻找最小值,参考官方题解评论(. - 力扣(LeetCode))。
class Solution:
def minMoves(self, nums: List[int]) -> int:
# 数学2
# 在遍历过程中动态寻找最小值
ans = 0
mn = nums[0] #若这里设为inf会导致返回空
# 因为第一次时,ans += inf*0
for i,x in enumerate(nums):
if x < mn:
ans += (mn - x) * i #加上之前最小值之间的差值
mn = x #更新最小值
else:
ans += x - mn
return ans
直接相乘,但是会有溢出风险。代码如下:
class Solution:
def minMoves(self, nums: List[int]) -> int:
# 数学3
# 可能会有int溢出风险
return sum(nums) - len(nums) * min(nums)
完
感谢你看到这里!一起加油吧!