1217. 玩籌碼 : 簡單貪心運(yùn)用題

題目描述

這是 LeetCode 上的 1217. 玩籌碼 涂臣,難度為 簡單

Tag : 「貪心」礁遵、「枚舉」

n 個籌碼兑燥。第 i 個籌碼的位置是 position[i]诚些。

我們需要把所有籌碼移到同一個位置。在一步中,我們可以將第 i 個籌碼的位置從 position[i] 改變?yōu)?

  • position[i] + 2 或 position[i] - 2,此時 cost = 0
  • position[i] + 1 或 position[i] - 1哑舒,此時 cost = 1

返回將所有籌碼移動到同一位置上所需要的 最小代價(jià) 。

示例 1:


輸入:position = [1,2,3]

輸出:1

解釋:第一步:將位置3的籌碼移動到位置1畦粮,成本為0散址。
第二步:將位置2的籌碼移動到位置1乖阵,成本= 1宣赔。
總成本是1。

示例 2:


輸入:position = [2,2,2,3,3]

輸出:2

解釋:我們可以把位置3的兩個籌碼移到位置2瞪浸。每一步的成本為1儒将。總成本= 2对蒲。

示例 3:

輸入:position = [1,1000000000]

輸出:1

提示:

  • 1 <= chips.length <= 100
  • 1 <= chips[i] <= 10^9

貪心 + 枚舉目標(biāo)位置

假設(shè)移動的目標(biāo)位置是 a钩蚊,當(dāng)前所在位置是 b,將小球從 b 移動到 a 的成本取決于兩位置距離的「奇偶性」蹈矮,距離為偶數(shù)時成本固定為 0砰逻,距離為奇數(shù)時成本固定為 1

同時我們可以通過「分情況討論」來證明泛鸟,所有小球移動到一個全新位置(起始沒有小球的位置)蝠咆,結(jié)果不會變好,假設(shè)所選擇的最終(全新)位置為 t

  • 假設(shè)選擇的位置 t 導(dǎo)致所有數(shù)到位置 t 距離均為偶數(shù)北滥,此時總成本為 0刚操,同時可知所有數(shù)的位置奇偶性相同,此時選擇所有數(shù)中的任意一個的位置再芋,同樣可得總成本為 0 的結(jié)果菊霜,因此選全新的位置不會讓結(jié)果變好;
  • 假設(shè)選擇的位置 t 導(dǎo)致所有數(shù)到位置 t 距離均為奇數(shù)济赎,此時總成本為 n鉴逞,同時可知所有數(shù)的位置奇偶性相同,此時選擇所有數(shù)中的任意一個的位置司训,可得總成本為 0 的結(jié)果构捡,因此選全新的位置會讓結(jié)果變差;
  • 假設(shè)選擇的位置 t 導(dǎo)致所有數(shù)到位置 t 距離奇數(shù)結(jié)果為 c1豁遭,偶數(shù)結(jié)果為 c2叭喜,可知 n = c1 + c2,同時我們通過調(diào)整 t 的奇偶性來確保 c1 <= c2蓖谢。此時總的成本為 c1捂蕴,同時可知所有與 t 距離為奇數(shù)的數(shù)所在位置奇偶性相同譬涡,所有與 t 距離為偶數(shù)的數(shù)所在位置奇偶性也相同,此時將 t 調(diào)整為與 t 奇偶性相同的原有數(shù)的位置啥辨,同樣能夠得到總成本為 c1 的結(jié)果涡匀,因此選全新的位置不會讓結(jié)果變好。

綜上溉知,我們可以枚舉所有已有的位置為目標(biāo)位置陨瘩,并通過奇偶性統(tǒng)計(jì)其余位置到目標(biāo)位置的成本,在所有已有位置中取最小的總成本即是答案级乍。

代碼:

class Solution {
    public int minCostToMoveChips(int[] ps) {
        int n = ps.length, ans = Integer.MAX_VALUE;
        for (int i = 0; i < n; i++) {
            int a = ps[i], cur = 0;
            for (int j = 0; j < n; j++) {
                int b = ps[j];
                cur += Math.abs(a - b) % 2;
            }
            ans = Math.min(ans, cur);
        }
        return ans;
    }
}
  • 時間復(fù)雜度:O(n^2)
  • 空間復(fù)雜度:O(1)

貪心 + 統(tǒng)計(jì)奇偶性

更進(jìn)一步舌劳,我們可以發(fā)現(xiàn)要使得「總的移動成本最優(yōu)」的目標(biāo)位置有無數(shù)個,只要目標(biāo)位置的奇偶性不變玫荣,即可確鄙醯總成本不變。

因此我們可以省去枚舉具體位置的操作捅厂,轉(zhuǎn)而統(tǒng)計(jì)原有數(shù)的奇偶位置個數(shù)贯卦,假設(shè)偶數(shù)位置有 a 個,奇數(shù)位置有 b 個焙贷,最終目標(biāo)位置選為偶數(shù)的成本為 b撵割,最終目標(biāo)位置選為奇數(shù)的成本為 a,即兩者中的最小值即是答案辙芍。

代碼:

class Solution {
    public int minCostToMoveChips(int[] ps) {
        int n = ps.length, a = 0;
        for (int i : ps) a += i % 2;
        return Math.min(a, n - a);
    }
}
  • 時間復(fù)雜度:O(n)
  • 空間復(fù)雜度:O(1)

最后

這是我們「刷穿 LeetCode」系列文章的第 No.1217 篇啡彬,系列開始于 2021/01/01,截止于起始日 LeetCode 上共有 1916 道題目沸手,部分是有鎖題外遇,我們將先把所有不帶鎖的題目刷完。

在這個系列文章里面契吉,除了講解解題思路以外跳仿,還會盡可能給出最為簡潔的代碼。如果涉及通解還會相應(yīng)的代碼模板捐晶。

為了方便各位同學(xué)能夠電腦上進(jìn)行調(diào)試和提交代碼菲语,我建立了相關(guān)的倉庫:https://github.com/SharingSource/LogicStack-LeetCode

在倉庫地址里惑灵,你可以看到系列文章的題解鏈接山上、系列文章的相應(yīng)代碼、LeetCode 原題鏈接和其他優(yōu)選題解英支。

本文由mdnice多平臺發(fā)布

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末佩憾,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌妄帘,老刑警劉巖楞黄,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異抡驼,居然都是意外死亡鬼廓,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門致盟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碎税,“玉大人,你說我怎么就攤上這事馏锡±柞澹” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵眷篇,是天一觀的道長萎河。 經(jīng)常有香客問我,道長蕉饼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任玛歌,我火速辦了婚禮昧港,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘支子。我一直安慰自己创肥,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布值朋。 她就那樣靜靜地躺著叹侄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪昨登。 梳的紋絲不亂的頭發(fā)上趾代,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機(jī)與錄音丰辣,去河邊找鬼撒强。 笑死,一個胖子當(dāng)著我的面吹牛笙什,可吹牛的內(nèi)容都是我干的飘哨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼琐凭,長吁一口氣:“原來是場噩夢啊……” “哼芽隆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤胚吁,失蹤者是張志新(化名)和其女友劉穎臼闻,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體囤采,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡述呐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蕉毯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乓搬。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖代虾,靈堂內(nèi)的尸體忽然破棺而出进肯,到底是詐尸還是另有隱情,我是刑警寧澤棉磨,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布江掩,位于F島的核電站,受9級特大地震影響乘瓤,放射性物質(zhì)發(fā)生泄漏环形。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一衙傀、第九天 我趴在偏房一處隱蔽的房頂上張望抬吟。 院中可真熱鬧,春花似錦统抬、人聲如沸火本。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钙畔。三九已至,卻和暖如春金麸,著一層夾襖步出監(jiān)牢的瞬間擎析,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工钱骂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叔锐,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓见秽,卻偏偏與公主長得像愉烙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子解取,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容