【LeetCode】Minimum Moves to Equal Array Elements 解題報告__leetcode

來源:互聯網
上載者:User
【LeetCode】Minimum Moves to Equal Array Elements 解題報告

標籤(空格分隔): LeetCode

[LeetCode]

https://leetcode.com/problems/minimum-moves-to-equal-array-elements/ Difficulty: Easy Question

Given a non-empty integer array of size n, find the minimum number of moves required to make all array elements equal, where a move is incrementing n - 1 elements by 1.

Example:Input:[1,2,3]Output:3Explanation:Only three moves are needed (remember each move increments two elements):[1,2,3]  =>  [2,3,3]  =>  [3,4,3]  =>  [4,4,4]
Ways

方法一:

我用的直接的方法,每次把數組排序,然後把前n-1個元素++,再排序,知道首尾元素相等即可。

根據測試案例,這個方法應該對的,但這個方法時間超出。

public class Solution {    public int minMoves(int[] nums) {        int count=0;        Arrays.sort(nums);        while(nums[0] != nums[nums.length-1]){            for(int i=0; i<nums.length-1; i++){                nums[i]++;                            }            Arrays.sort(nums);            count++;        }        return count;    }}

方法二:

看了高票答案之後,才明白,把其中最小的n-1個元素都++ 相當於 把最大的元素–;

我們的目標是把所有的元素搞相等,也就是每次把最大的元素-1 直到所有元素都等於最小元素即可。

故總的運算次數等於 所有元素與最小元素 的差 的和: sum(array) - n * minimum

public class Solution {    public int minMoves(int[] nums) {        int count=0;        int min=nums[0];        for(int num : nums){            min=Math.min(min,num);        }        for(int num : nums){            count += num - min;        }        return count;    }}

AC: 14 ms

方法三:

受到上面的想法的啟發,反思方法一,沒必要每次迴圈都排下序,按照相減的策略,排序後,第一個元素就是最小元素,再求出其他元素與最小元素的差的和即可。

排序演算法的時間複雜度是O(nlog(n))

public class Solution {    public int minMoves(int[] nums) {        int count=0;        Arrays.sort(nums);        for(int num : nums){            count += num - nums[0];        }        return count;    }}

AC:53 ms

官網給的解答很好,很全面而且配了視頻。好評。https://leetcode.com/articles/minimum-moves-to-equal-array-elements/ Date

2017 年 1 月 7 日

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.