↑看個小廣告,支持好內容↑
從規則可知,金幣可以任意地連動兩步,只有移動一步時要花費。有沒有嗅到一種分奇、偶數的直覺 ......
既然奇數位置之間可任意移動,偶數位置也是,我們可以把金幣直接分成兩堆:
// position=[2,100,7,3,4]
奇數堆:7 移到 3 (3,7)
偶數堆:4,100 移到 2 (2,4,100)
再將數量少的那堆移到另一堆就完成了,以上圖為例,花費為 min(3,2)=3
。
參考程式碼:
var minCostToMoveChips = function(position) {
let all = position.length;
let odd = position.filter(x => x%2).length;
return Math.min(odd, all-odd);
};
Array
、Math
、Greedy
71.8%