这道题出自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。

这道题其实是个脑筋急转弯的题目。由题意可以看出,移动偶数距离是无需代价的,而移动奇数距离是需要n * 1个代价(n为筹码的数量)。那么首先,我们可以将位于偶数位置上的筹码进行合并,合并到一个位置上,此时移动所需的代价为0,因为偶数减去一个偶数依旧是偶数;类似地,也可以将位于奇数位置上的筹码进行合并,合并到一个位置上,代价依旧是0,因为奇数减去一个奇数得到的是偶数。

在进行这两步操作后,筹码被我们分成了两堆,一堆位于某一个奇数位置,一堆位于某一个偶数位置,此时的代价为0。显然最后一步,就是将奇数堆移动到偶数堆,或者偶数堆移动到奇数堆。假设奇数堆的筹码数量为m,偶数堆的筹码数量为n,那么最小的移动代价即为min(m, n)。

最后通过的代码如下:

class Solution {
public:int minCostToMoveChips(vector<int>& position) {int odd = 0;int even = 0;for(auto p : position){p & 0x1 ? odd++ : even++;}return min(odd, even);}
};

LeetCode 玩筹码相关推荐

  1. leetcode 1217. 玩筹码

    [题目]1217. 玩筹码 数轴上放置了一些筹码,每个筹码的位置存在数组 chips 当中. 你可以对 任何筹码 执行下面两种操作之一(不限操作次数,0 次也可以): 将第 i 个筹码向左或者右移动 ...

  2. LeetCode之玩筹码

    题目:玩筹码 思路: 算出在偶数根棍子上的筹码数, 奇数根棍子上的筹码数 :二者中的最小值就是结果. 因为我们可以通过0代价把所有筹码都移动到两根棍子上,然后把其中一根棍子上筹码较少的筹码通过1代价一 ...

  3. 【LeetCode每日一题】——1217.玩筹码

    文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[解题思路] 七[题目提示] 八[时间频度] 九[代码实现] 十[提交结果] 一[题目类别] 贪心算法 二[ ...

  4. LeetCode 1217. 玩筹码(脑筋急转弯)

    1. 题目 数轴上放置了一些筹码,每个筹码的位置存在数组 chips 当中. 你可以对 任何筹码 执行下面两种操作之一(不限操作次数,0 次也可以): 将第 i 个筹码向左或者右移动 2 个单位,代价 ...

  5. leetcode —— 1217. 玩筹码

    数轴上放置了一些筹码,每个筹码的位置存在数组 chips 当中. 你可以对 任何筹码 执行下面两种操作之一(不限操作次数,0 次也可以): 将第 i 个筹码向左或者右移动 2 个单位,代价为 0. 将 ...

  6. LeetCode - 1217 - 玩筹码(play-with-chips)

    一 目录 不折腾的前端,和咸鱼有什么区别 目录 一 目录 二 前言 三 解题 二 前言 难度:简单 涉及知识:贪心算法.数组.数学 题目地址:https://leetcode-cn.com/probl ...

  7. LeetCode——1217. 玩筹码

    题目描述: 数轴上放置了一些筹码,每个筹码的位置存在数组 chips 当中. 你可以对 任何筹码 执行下面两种操作之一(不限操作次数,0 次也可以): 方式一:将第 i 个筹码向左或者右移动 2 个单 ...

  8. leetcode 1217. Minimum Cost to Move Chips to The Same Position | 1217. 玩筹码(Java)

    题目 题解 所有的 chips,要么在奇数位置,要么在偶数位置 class Solution {public int minCostToMoveChips(int[] position) {int p ...

  9. 力扣1217. 玩筹码

    题目 有 n 个筹码.第 i 个筹码的位置是 position[i] . 我们需要把所有筹码移到同一个位置.在一步中,我们可以将第 i 个筹码的位置从 position[i] 改变为: positio ...

最新文章

  1. Python的列表推导式
  2. 关于网上cython书籍的调研
  3. vi 多窗口同步滚动--适用于人工文件比较
  4. sqoop从HDFS导出数据到Mysql,卡在Running job: job_1571036741208_0010不动了,或者map 100% reduce 0%不动了
  5. php有哪些开源社区,PHP开源社区
  6. std::vector中resize()和reserve()区别
  7. 互联网(IT)大厂面试技巧(面经)
  8. python实例属性引用-python之对象(实例)
  9. 学习笔记之 prim算法和kruskal算法
  10. CentOS下DB2数据库安装过程详解
  11. 名企面试官精讲典型编程题之数据结构数组篇
  12. visual assist x 2406 和 2435,2443 原版安装下载,只要一分
  13. php 读取脸型,基于OpenCV的PHP图像人脸检测识别技术
  14. android九游sdk,九游单机SDK接入常见问题
  15. 你程序员,996这就是你的命
  16. 计算机软考答题卡填涂格式,软考填涂答题卡(纸)须知
  17. ui界面设计是什么:ui设计常用软件
  18. 思科模拟器 --- 路由器RIP动态路由配置
  19. Aegisub的视频窗口详解
  20. 自考本科有用吗?对职业发展有多大用处

热门文章

  1. Docker化Node.js网络应用
  2. 2022年,中国餐饮数字化进行到哪一步了?
  3. python学习-绪
  4. 执行docker命令,出现Cannot connect to the Docker daemon at unix:///var/run/docker.sock.
  5. 使用pandas对excel追加列数据
  6. python基础(第九章)面向对象
  7. 用公式π/ 4 = 1 – 1 / 3 + 1 / 5 – 1 / 7 + … 求π的近似值,直到最后一项的绝对值小于10的负6次方为止。
  8. freertos---队列管理
  9. Android 腾讯手机管家 报毒 a.gray.PiggyGoldcoin.a
  10. 嵌入式读图基础-熊健-专题视频课程