摘要:對(duì)二者進(jìn)行計(jì)算可以得出。假如并不是每一步都會(huì)將最小的值加一,則這個(gè)值永遠(yuǎn)是最小值,它將永遠(yuǎn)無法達(dá)到最終的目標(biāo)值。
題目要求
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: 3 Explanation: Only three moves are needed (remember each move increments two elements): [1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]
從一個(gè)長度為n非空整數(shù)數(shù)組中,找到能夠使得數(shù)組中每個(gè)元素的值都相等的最少步數(shù),一步是指選擇對(duì)數(shù)組中的n-1個(gè)元素加一。比如將[1,2,3]這個(gè)數(shù)組達(dá)到均等的最小步數(shù)要求為3步,過程如下:
[1,2,3]
[2,3,3]
[3,3,4]
[4,4,4]
思路和代碼假設(shè)這個(gè)具有n個(gè)元素的數(shù)組中的最小值為min,這個(gè)數(shù)組所有元素的和為sum,使其達(dá)到均等的最小步數(shù)為move,均等的值為target,則可以得到公式sum + (n - 1) * move = target * n。其中,可以推導(dǎo)出target = min + move,即在每一步中都會(huì)對(duì)初始時(shí)最小的元素加一。對(duì)二者進(jìn)行計(jì)算可以得出sum - move = min * n。
至于為什么target = min + move,其實(shí)理由很簡單。假如并不是每一步都會(huì)將最小的值加一,則這個(gè)值永遠(yuǎn)是最小值,它將永遠(yuǎn)無法達(dá)到最終的目標(biāo)值。反過來想,這個(gè)題目等價(jià)于從目標(biāo)值開始,每一步都會(huì)對(duì)某個(gè)值-1,直到回到初始數(shù)組,則每一次都被執(zhí)行-1得到的結(jié)果就是這個(gè)數(shù)組的最小值。
代碼如下:
public int minMoves(int[] nums) { int min = Integer.MAX_VALUE; int sum = 0; for(int num : nums) { min = Math.min(min, num); sum += num; } return sum - min * nums.length; }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/75114.html
摘要:如果是偶數(shù)的話,中位數(shù)是兩個(gè)中間的數(shù)之間的任意一個(gè)數(shù)字。將從最小值逐步向最大值移動(dòng)。也就是說,如果在和間移動(dòng),二者到的距離和是不變的。同理,當(dāng)?shù)竭_(dá)中位數(shù),并且繼續(xù)向右移動(dòng)時(shí),會(huì)發(fā)現(xiàn)整體數(shù)組的移動(dòng)距離也隨之增加。 題目要求 Given a non-empty integer array, find the minimum number of moves required to make ...
摘要:在線網(wǎng)站地址我的微信公眾號(hào)完整題目列表從年月日起,每天更新一題,順序從易到難,目前已更新個(gè)題。這是項(xiàng)目地址歡迎一起交流學(xué)習(xí)。 這篇文章記錄我練習(xí)的 LeetCode 題目,語言 JavaScript。 在線網(wǎng)站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公眾號(hào): showImg(htt...
摘要:月下半旬攻略道題,目前已攻略題。目前簡單難度攻略已經(jīng)到題,所以后面會(huì)調(diào)整自己,在刷算法與數(shù)據(jù)結(jié)構(gòu)的同時(shí),攻略中等難度的題目。 Create by jsliang on 2019-07-30 16:15:37 Recently revised in 2019-07-30 17:04:20 7 月下半旬攻略 45 道題,目前已攻略 100 題。 一 目錄 不折騰的前端,和咸魚有什么區(qū)別...
摘要:題目要求假設(shè)一個(gè)二維的整數(shù)數(shù)組中每一行表示一個(gè)區(qū)間,每一行的第一個(gè)值表示區(qū)間的左邊界,第二個(gè)值表示區(qū)間的右邊界。 題目要求 Given a set of intervals, for each of the interval i, check if there exists an interval j whose start point is bigger than or equal ...
摘要:這樣,我們可以保證隊(duì)列里的元素是從頭到尾降序的,由于隊(duì)列里只有窗口內(nèi)的數(shù),所以他們其實(shí)就是窗口內(nèi)第一大,第二大,第三大的數(shù)。 Sliding Window Maximum Given an array nums, there is a sliding window of size k which is moving from the very left of the array to...
閱讀 2770·2021-11-25 09:43
閱讀 2132·2021-11-18 13:25
閱讀 4625·2021-09-22 15:52
閱讀 1893·2021-09-22 15:49
閱讀 2233·2019-08-30 15:54
閱讀 3028·2019-08-29 17:13
閱讀 2336·2019-08-29 16:54
閱讀 2273·2019-08-29 12:58