LeetCode 玩筹码
这道题出自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 玩筹码相关推荐
- leetcode 1217. 玩筹码
[题目]1217. 玩筹码 数轴上放置了一些筹码,每个筹码的位置存在数组 chips 当中. 你可以对 任何筹码 执行下面两种操作之一(不限操作次数,0 次也可以): 将第 i 个筹码向左或者右移动 ...
- LeetCode之玩筹码
题目:玩筹码 思路: 算出在偶数根棍子上的筹码数, 奇数根棍子上的筹码数 :二者中的最小值就是结果. 因为我们可以通过0代价把所有筹码都移动到两根棍子上,然后把其中一根棍子上筹码较少的筹码通过1代价一 ...
- 【LeetCode每日一题】——1217.玩筹码
文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[解题思路] 七[题目提示] 八[时间频度] 九[代码实现] 十[提交结果] 一[题目类别] 贪心算法 二[ ...
- LeetCode 1217. 玩筹码(脑筋急转弯)
1. 题目 数轴上放置了一些筹码,每个筹码的位置存在数组 chips 当中. 你可以对 任何筹码 执行下面两种操作之一(不限操作次数,0 次也可以): 将第 i 个筹码向左或者右移动 2 个单位,代价 ...
- leetcode —— 1217. 玩筹码
数轴上放置了一些筹码,每个筹码的位置存在数组 chips 当中. 你可以对 任何筹码 执行下面两种操作之一(不限操作次数,0 次也可以): 将第 i 个筹码向左或者右移动 2 个单位,代价为 0. 将 ...
- LeetCode - 1217 - 玩筹码(play-with-chips)
一 目录 不折腾的前端,和咸鱼有什么区别 目录 一 目录 二 前言 三 解题 二 前言 难度:简单 涉及知识:贪心算法.数组.数学 题目地址:https://leetcode-cn.com/probl ...
- LeetCode——1217. 玩筹码
题目描述: 数轴上放置了一些筹码,每个筹码的位置存在数组 chips 当中. 你可以对 任何筹码 执行下面两种操作之一(不限操作次数,0 次也可以): 方式一:将第 i 个筹码向左或者右移动 2 个单 ...
- leetcode 1217. Minimum Cost to Move Chips to The Same Position | 1217. 玩筹码(Java)
题目 题解 所有的 chips,要么在奇数位置,要么在偶数位置 class Solution {public int minCostToMoveChips(int[] position) {int p ...
- 力扣1217. 玩筹码
题目 有 n 个筹码.第 i 个筹码的位置是 position[i] . 我们需要把所有筹码移到同一个位置.在一步中,我们可以将第 i 个筹码的位置从 position[i] 改变为: positio ...
最新文章
- Python的列表推导式
- 关于网上cython书籍的调研
- vi 多窗口同步滚动--适用于人工文件比较
- sqoop从HDFS导出数据到Mysql,卡在Running job: job_1571036741208_0010不动了,或者map 100% reduce 0%不动了
- php有哪些开源社区,PHP开源社区
- std::vector中resize()和reserve()区别
- 互联网(IT)大厂面试技巧(面经)
- python实例属性引用-python之对象(实例)
- 学习笔记之 prim算法和kruskal算法
- CentOS下DB2数据库安装过程详解
- 名企面试官精讲典型编程题之数据结构数组篇
- visual assist x 2406 和 2435,2443 原版安装下载,只要一分
- php 读取脸型,基于OpenCV的PHP图像人脸检测识别技术
- android九游sdk,九游单机SDK接入常见问题
- 你程序员,996这就是你的命
- 计算机软考答题卡填涂格式,软考填涂答题卡(纸)须知
- ui界面设计是什么:ui设计常用软件
- 思科模拟器 --- 路由器RIP动态路由配置
- Aegisub的视频窗口详解
- 自考本科有用吗?对职业发展有多大用处
热门文章
- Docker化Node.js网络应用
- 2022年,中国餐饮数字化进行到哪一步了?
- python学习-绪
- 执行docker命令,出现Cannot connect to the Docker daemon at unix:///var/run/docker.sock.
- 使用pandas对excel追加列数据
- python基础(第九章)面向对象
- 用公式π/ 4 = 1 – 1 / 3 + 1 / 5 – 1 / 7 + … 求π的近似值,直到最后一项的绝对值小于10的负6次方为止。
- freertos---队列管理
- Android 腾讯手机管家 报毒 a.gray.PiggyGoldcoin.a
- 嵌入式读图基础-熊健-专题视频课程