數軸上放置了一些籌碼,每一個籌碼的位置存在數組 chips 當中。web
你能夠對 任何籌碼 執行下面兩種操做之一(不限操做次數,0 次也能夠):數組
將第 i 個籌碼向左或者右移動 2 個單位,代價爲 0。
將第 i 個籌碼向左或者右移動 1 個單位,代價爲 1。
最開始的時候,同一位置上也可能放着兩個或者更多的籌碼。svg
返回將全部籌碼移動到同一位置(任意位置)上所須要的最小代價。spa
示例 1:.net
輸入:chips = [1,2,3]
輸出:1
解釋:第二個籌碼移動到位置三的代價是 1,第一個籌碼移動到位置三的代價是 0,總代價爲 1。
示例 2:code
輸入:chips = [2,2,2,3,3]
輸出:2
解釋:第四和第五個籌碼移動到位置二的代價都是 1,因此最小總代價爲 2。xml
提示:token
1 <= chips.length <= 100
1 <= chips[i] <= 10^9ip
class Solution { public: int minCostToMoveChips(vector<int>& chips) { int d=0,s=0; for(int i=0;i<chips.size();i++) { int p=chips[i]; if(p%2) d++; else s++; } return min(d,s); } };
提示:題意重點《 將第 i 個籌碼向左或者右移動 2 個單位,代價爲 0。
將第 i 個籌碼向左或者右移動 1 個單位,代價爲 1 》
能夠把他們分爲奇數與偶數,奇數類或者偶數類內部之間互相移動不會消耗,咱們就能夠把問題分解爲求 min(奇數,偶數),小的移到大的上就夠了get
本文分享 CSDN - 希境。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。