1. 程式人生 > 實用技巧 >462. 最少移動次數使陣列元素相等 II

462. 最少移動次數使陣列元素相等 II

給定一個非空整數陣列,找到使所有陣列元素相等所需的最小移動數,其中每次移動可將選定的一個元素加1或減1。 您可以假設陣列的長度最多為10000。

例如:

輸入:
[1,2,3]

輸出:
2

說明:
只有兩個動作是必要的(記得每一步僅可使其中一個元素加1或減1):

[1,2,3] => [2,2,3] => [2,2,2]
通過次數8,382提交次數14,140

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/minimum-moves-to-equal-array-elements-ii
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

亂寫的,這也能過?

class Solution:
    def minMoves2(self, nums: List[int]) -> int:
        n=len(nums)
        if n==1:return 0
        if n==2:return abs(nums[0]-nums[1])
        nums.sort()
        ll=nums[n//2-1]
        l=nums[n//2]
        r=nums[n//2+1]
        res=0
        for i in nums:
            res
+=abs(i-ll) res1=0 for i in nums: res1+=abs(i-l) res2=0 for i in nums: res2+=abs(i-r) return min(res,res1,res2)

看了下評論發現還真是找中位數

class Solution:
    def minMoves2(self, nums: List[int]) -> int:
        n=len(nums)
        nums.sort()
        l
=nums[n//2] res=0 for i in nums: res+=abs(i-l) return res