Minimum Moves to Equal Array Elements 最小移動次數使陣列元素相等
給定一個長度為 n 的非空整數陣列,找到讓陣列所有元素相等的最小移動次數。每次移動可以使 n - 1 個元素增加 1。
示例:
輸入: [1,2,3] 輸出: 3 解釋: 只需要3次移動(注意每次移動會增加兩個元素的值): [1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]
思路:這是一道純數學問題,假設陣列總和為sum,最小值為min_number,那麼滿足如下等式:
sum+m*(n-1)=n*x //其中x為最終相等的值,n為陣列的長度,m是移動的次數
由於觀察到:x=min_number+m,這個等式的意思是:最終相等的值一定是由最小的數min_number+移動的次數m得到的。這裡有反證法,先預設成立。
那麼化簡等式:m=sum-min_number*n
這裡證明等式,假設不是由最小值加m次得到x的,假設是由另外一個值p加m次得到x的,那麼對於最小值min_number來說,被加的次數一定小於x,所以條件不成立。一定是最小的那個值加了m次得到的x。
參考程式碼:
class Solution {
public:
int minMoves(vector<int>& nums) {
if (nums.size() <= 1) return 0;
int min_number = nums[0];
int sum = 0;
for (int i = 0; i < nums.size(); i++) {
sum += nums[i];
if (min_number > nums[i]) min_number = nums[i];
}
return sum - min_number * nums.size();
}
};
相關文章
- 【Leetcode】453. Minimum Moves to Equal Array ElementsLeetCode
- Leetcode 453. Minimum Moves to Equal Array ElementsLeetCode
- leetcode:462. 最少移動次數使陣列元素相等 II(數學,中等)LeetCode陣列
- JavaScript刪除array陣列元素JavaScript陣列
- 陣列中每個陣列元素出現的次數陣列
- 旋轉陣列中的最小元素陣列
- Array · 刪除陣列中指定的元素陣列
- 統計陣列中各元素出現次數陣列
- 找出陣列中元素出現次數超過陣列長度一半的元素陣列
- 統計陣列元素中每個元素出現的次數陣列
- Array · 判斷某元素是否在陣列中陣列
- javascript delete運算子刪除array陣列元素JavaScriptdelete陣列
- 把陣列排成最小的數陣列
- TPU &“脈動陣列”(systolic array)陣列
- Array陣列陣列
- js找出陣列中出現最多的元素和次數JS陣列
- iOS 判斷陣列array中是否包含指定的元素,取出該元素在array中的下標+陣列方法詳解...iOS陣列
- 統計陣列中各數字(元素)出現的次數陣列
- jQuery遍歷array陣列元素程式碼例項jQuery陣列
- JavaScript Array 陣列JavaScript陣列
- Matlab 統計陣列中各數字(元素)出現的次數Matlab陣列
- 移除陣列 arr 中的所有值與 item 相等的元素。不要直接修改陣列 arr,結果返回新的陣列陣列
- JavaScript之陣列ArrayJavaScript陣列
- HDU 1394 Minimum Inversion Number (樹狀陣列求逆序數)陣列
- JavaScript 陣列一次追加多個元素JavaScript陣列
- JZ-032-把陣列排成最小的數陣列
- 陣列中未出現的最小正整數陣列
- 【劍指offer】把陣列排成最小的數陣列
- jQuery實現的多列元素高度相等jQuery
- 比較兩個陣列是否相等陣列
- 如何從整數陣列中找到最大和最小數陣列
- js獲取陣列中元素出現的次數程式碼例項JS陣列
- 【谷歌面試題】求陣列中兩個元素的最小距離谷歌面試題陣列
- 內建物件--Array(陣列)物件陣列
- 磁碟陣列(Disk array)原理陣列
- 判斷陣列裡面的json 物件是否相等,相等則移除陣列JSON物件
- 劍指offer:旋轉陣列的最小數字陣列
- 找到無序陣列中最小的k個數陣列