Leetcode 462.最少移動次數使數組元素相等
阿新 • • 發佈:2019-01-17
return pub color 找到 solution 給定 ava i++ public
最少移動次數使數組元素相等
給定一個非空整數數組,找到使所有數組元素相等所需的最小移動數,其中每次移動可將選定的一個元素加1或減1。 您可以假設數組的長度最多為10000。
例如:
輸入:
[1,2,3]
輸出:
2
說明:
只有兩個動作是必要的(記得每一步僅可使其中一個元素加1或減1):
[1,2,3] => [2,2,3] => [2,2,2]
排序之後,從兩邊往中間走,最大和最小之間的差距,是一定要填補上的,不管+1 還是 -1,所以最後都等於中位數。
1 import java.util.Arrays; 2 3 class Solution {4 public int minMoves2(int[] nums) { 5 Arrays.sort(nums); 6 int i=0; 7 int j=nums.length-1; 8 int cnt=0; 9 while(i<j){ 10 cnt+=nums[j--]-nums[i++]; 11 } 12 return cnt; 13 } 14 }
Leetcode 462.最少移動次數使數組元素相等