5213 玩筹码 leetcode

简介: 5213 玩筹码 leetcode

数轴上放置了一些筹码,每个筹码的位置存在数组 chips 当中。


你可以对 任何筹码 执行下面两种操作之一(不限操作次数,0 次也可以):


将第 i 个筹码向左或者右移动 2 个单位,代价为 0。

将第 i 个筹码向左或者右移动 1 个单位,代价为 1。

最开始的时候,同一位置上也可能放着两个或者更多的筹码。


返回将所有筹码移动到同一位置(任意位置)上所需要的最小代价。



示例 1:


输入:chips = [1,2,3]

输出:1

解释:第二个筹码移动到位置三的代价是 1,第一个筹码移动到位置三的代价是 0,总代价为 1。

示例 2:


输入:chips = [2,2,2,3,3]

输出:2

解释:第四和第五个筹码移动到位置二的代价都是 1,所以最小总代价为 2。


提示:


1 <= chips.length <= 100

1 <= chips[i] <= 10^9


```cpp

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(奇数,偶数),小的移到大的上就够了

目录
相关文章
|
6月前
|
C++ Python
leetcode-283:移动零
leetcode-283:移动零
29 0
|
1月前
【LeetCode 02】暴力法总结
【LeetCode 02】暴力法总结
15 1
|
6月前
|
消息中间件 Kubernetes NoSQL
LeetCode 3、28、1351
LeetCode 3、28、1351
单链表反转 LeetCode 206
单链表反转 LeetCode 206
74 0
LeetCode 389. 找不同
给定两个字符串 s 和 t,它们只包含小写字母。
72 0
|
索引
|
算法 Python
LeetCode 386. Lexicographical Numbers
给定一个整数 n, 返回从 1 到 n 的字典顺序。
84 0
LeetCode 386. Lexicographical Numbers
|
存储 算法
leetcode第49题
时间复杂度:两层 for 循环,再加上比较字符串,如果字符串最长为 K,总的时间复杂度就是 O(n²K)。 空间复杂度:O(NK),用来存储结果。 解法一算是比较通用的解法,不管字符串里边是大写字母,小写字母,数字,都可以用这个算法解决。这道题的话,题目告诉我们字符串中只有小写字母,针对这个限制,我们可以再用一些针对性强的算法。 下边的算法本质是,我们只要把一类的字符串用某一种方法唯一的映射到同一个位置就可以。
165 0
leetcode第49题
|
机器学习/深度学习
leetcode第50题
求幂次方,用最简单的想法,就是写一个 for 循环累乘。 至于求负幂次方,比如 2^{-10}2−10,可以先求出 2^{10}210,然后取倒数,1/2^{10}1/210 ,就可以了 double mul = 1; if (n > 0) { for (int i = 0; i < n; i++) { mul *= x; } } else { n = -n; for (int i = 0; i < n; i++) { mul *= x; } mul = 1 / mul; }
leetcode第50题