5213 玩筹码 leetcode

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

相关文章
相关标签/搜索