Golang:
思路:这题想不通就很难,想通了就很简单,思路的话,简单描述就是逆向思维,将题目所给的条件换一种说法,一切就豁然开朗了。这题理解上首先就挺绕的,我觉得应该翻译为:一个长度为n的数组,我们每次只能让n-1个元素都增加1。问多少次以后,数组内所有元素可以相等。这样一描述,估计就看懂了,但还是很难对不对。我们逆向一下,n-1个元素均加一,等同于剩下那1个元素减一,对吧。那这题就变成了,n个元素的数组,每次都有一个元素减一,问多少次以后数组内元素全部相等。这样,解法就很简单了对吧,因此我就不多做陈述了。
代码如下:
func minMoves(nums []int) int {
if len(nums)==1 {
return 0
}
sum:=0
temp:=nums[0]
for i:=1; i<len(nums); i++ {
if nums[i]<temp {
temp=nums[i]
}
}
for i:=0; i<len(nums); i++{
if nums[i]>temp {
sum=sum+nums[i]-temp
}
}
return sum
}
有疑问加站长微信联系(非本文作者)