go語言題解LeetCode453最小操作次數(shù)使數(shù)組元素相等
題目描述
原題鏈接 :
453. 最小操作次數(shù)使數(shù)組元素相等 - 力扣(LeetCode) (leetcode-cn.com)
給你一個長度為 n
的整數(shù)數(shù)組,每次操作將會使 n - 1
個元素增加 1
。返回讓數(shù)組所有元素相等的最小操作次數(shù)。
示例 1:
輸入:nums = [1,2,3] 輸出:3 解釋: 只需要3次操作(注意每次操作會增加兩個元素的值): [1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]
示例 2:
輸入:nums = [1,1,1] 輸出:0
提示:
n == nums.length
1 <= nums.length <= 10^5
-10^9 <= nums[i] <= 10^9
答案保證符合 32-bit 整數(shù)
思路分析
首先換個角度理解題目,將數(shù)組按順序表示為高度為nums[i]寬度為1的柱子,每次移動i的含義為除i外的所有柱子高度加1,這樣i柱子與其他柱子的相對高度減1,可將移動i理解為將i柱子高度減1,其他柱子不變。于是題目變?yōu)?,求將所有柱子減少為高度相等的柱子所需移動次數(shù)。由于每次都只能減少某根柱子的高度1,所以最少要移動sum(nums[i]-min(nums))次。
在遍歷nums的過程中,如果nums[i]大于之前的最小值,則nums[i]-min為需要減少的高度;
如果nums[i]小于之前的最小值,則需把前面沒有減少的高度i*(min-nums[i]),一次減掉。
AC 代碼
func minMoves(nums []int) int { min := 1<<31 - 1 sum := 0 for i := range nums { if nums[i] >= min { sum += (nums[i]-min) } else { sum += i * (min-nums[i]) min = nums[i] } } return sum }
小結(jié)
這道題主要理解題意之后,轉(zhuǎn)換一下就簡單了。
只需遍歷數(shù)組一次即可 - 最小操作次數(shù)使數(shù)組元素相等
遍歷數(shù)組一次
解題思路
對于要使得數(shù)組所有元素相等這個最終目標而言,將n-1個元素加一其實等價于將剩下的那個元素減一,因此只需要將所有元素進行減一操作直到等于數(shù)組中最小元素即可。所以最終的答案就是所有元素與最小元素的差值之和。
代碼
class Solution { public int minMoves(int[] nums) { if (nums.length<=1) return 0; int sum=0,min=Integer.MAX_VALUE; int base = nums[0]; for (int num:nums){ sum+=num-base; min=Integer.min(min,num); } return sum+(base-min)*nums.length; } }
強行找規(guī)律
解題思路
等于排序數(shù)組除第一位以外的和減去數(shù)組長度減1乘以數(shù)組第一個數(shù)
代碼
class Solution: def minMoves(self, nums: List[int]) -> int: nums.sort() return sum(nums[1:])-(len(nums)-1)*nums[0]
以上就是go語言題解LeetCode453最小操作次數(shù)使數(shù)組元素相等的詳細內(nèi)容,更多關于go最小操作數(shù)組元素相等的資料請關注腳本之家其它相關文章!
相關文章
Go?語言數(shù)據(jù)結(jié)構(gòu)如何實現(xiàn)抄一個list示例詳解
這篇文章主要為大家介紹了Go?語言數(shù)據(jù)結(jié)構(gòu)如何實現(xiàn)抄一個list示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04Go?CSV包實現(xiàn)結(jié)構(gòu)體和csv內(nèi)容互轉(zhuǎn)工具詳解
這篇文章主要介紹了Go?CSV包實現(xiàn)結(jié)構(gòu)體和csv內(nèi)容互轉(zhuǎn)工具詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03一文帶你了解Go中跟蹤函數(shù)調(diào)用鏈的實現(xiàn)
這篇文章主要為大家詳細介紹了go如何實現(xiàn)一個自動注入跟蹤代碼,并輸出有層次感的函數(shù)調(diào)用鏈跟蹤命令行工具,感興趣的小伙伴可以跟隨小編一起學習一下2023-11-11