标签:453 nums min 元素 全记录 最小值 数组 LeetCode
【LeetCode通关全记录】453. 最小操作次数使数组元素相等
题目地址:453. 最小操作次数使数组元素相等
解法:求所有元素与数组最小元素之间的差值
这道题与其说是算法,不如说是考察逆向思维的脑筋急转弯吧。。。
其实思路很简单:每次操作使n - 1
个元素增加1,那么效果其实就相当于让数组中最大的数减1,所以只要先求出数组中的最小值,再求所有元素与这个最小值的差,最后把这些差都加起来就是我们需要的答案了。
如果不明白的话可以看官方题解,讲得很清楚。
func minMoves(nums []int) int {
min := nums[0]
// 找出数组中的最小值
for _, v := range nums {
if v < min {
min = v
}
}
// 计算数组中所有元素与数组最小值的差值
ans := 0
for _, v := range nums {
ans += v - min
}
return ans
}
执行用时: 32 ms(超过93.58%的Golang提交记录)
内存消耗: 6.6 MB(超过90.83%的Golang提交记录)
时间复杂度:O(n),需要一次遍历求出数组中的最小值,还需要一次遍历求出数组中的值与最小值的差;
空间复杂度:O(1),只使用了常数个数的存储空间。
标签:453,nums,min,元素,全记录,最小值,数组,LeetCode 来源: https://blog.csdn.net/weixin_43887447/article/details/120875304
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。