数轴上放置了一些筹码,每一个筹码的位置存在数组 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源创计划”,欢迎正在阅读的你也加入,一块儿分享。