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

目录
相关文章
|
4月前
leetcode-1518:换酒问题
leetcode-1518:换酒问题
28 0
|
4月前
LeetCode
LeetCode
32 0
LeetCode 389. 找不同
给定两个字符串 s 和 t,它们只包含小写字母。
64 0
|
存储 Python
LeetCode 66. Plus One
给定表示非负整数的非空数字数组,加上整数的1。 存储数字使得最高有效数字位于列表的开头,并且数组中的每个元素包含单个数字。 您可以假设整数不包含任何前导零,除了数字0本身。
82 0
LeetCode 66. Plus One
|
测试技术
一和零(LeetCode-474)
一和零(LeetCode-474)
130 0
一和零(LeetCode-474)
|
C++ Python
LeetCode 771. Jewels and Stones
LeetCode 771. Jewels and Stones
72 0
leetcode第44题
时间复杂度:text 长度是 T,pattern 长度是 P,那么就是 O(TP)。 空间复杂度:O(TP)。 同样的,和第10题一样,可以优化空间复杂度。
leetcode第44题
leetcode第51题
较经典的回溯问题了,我们需要做的就是先在第一行放一个皇后,然后进入回溯,放下一行皇后的位置,一直走下去,如果已经放的皇后的数目等于 n 了,就加到最后的结果中。然后再回到上一行,变化皇后的位置,然后去找其他的解。 期间如果遇到当前行所有的位置都不能放皇后了,就再回到上一行,然后变化皇后的位置。再返回到下一行。 说起来可能还费力些,直接看代码吧。
leetcode第51题
|
算法
leetcode第34题
第二种思路,参考这里。 我们开始更新 start 的时候,是 mid + 1,如果剩两个元素,例如 2 4,target = 6 的话,此时 mid = 0,start = mid + 1 = 1,我们返回 start + 1 = 2。如果 mid 是右端点,那么 mid = 1,start = mid + 1 = 2,这样就可以直接返回 start 了,不需要在返回的时候加 1 了。
leetcode第34题