当前位置:网站首页>leetcode-每日一题1217. 玩筹码(贪心+位运算)
leetcode-每日一题1217. 玩筹码(贪心+位运算)
2022-07-31 05:10:00 【lin钟一】

题目链接:https://leetcode.cn/problems/minimum-cost-to-move-chips-to-the-same-position/
思路
直接想法
这题要求得到移动到同一格子的最小成本,跳两格的成本是0,跳一格的成本是1,所以我们需要尽量跳两格,发现刚好可以分成下标奇偶两列的棋子,可以把奇偶两列的棋子都移动到相邻的点上(移动到1和2上),此时我们只需要对比移动那块的棋子成本最低即可
算法
- 遍历棋子下标 position 数组
- 判断元素的奇偶性,把奇数下标记录在odd 元素里
- 对比奇数格子上的棋子和偶数格子上的棋子的数量,返回两者最小值 即可
代码示例
func minCostToMoveChips(position []int) int {
odd := 0
for _, v := range position {
if v & 1 == 1{
odd++
}
}
//len(position) - odd表示偶数格子的数量
if odd > len(position) - odd {
return len(position) - odd
}
return odd
}

复杂度分析
- 时间复杂度:O(n) 其中n表示数组长度,遍历数组需要花费O(n)的时间
- 空间复杂度:O(1) 没有申请额外空间
边栏推荐
猜你喜欢
随机推荐
Flink sink redis 写入Redis
MySQL-Explain详解
面试官问我TCP三次握手和四次挥手,我真的是
MySQL-如何分库分表?一看就懂
11 【定位】
13 【代理配置 插槽】
Anaconda configure environment directives
【MySQL8入门到精通】基础篇- Linux系统静默安装MySQL,跨版本升级
【MQ我可以讲一个小时】
对递归的一些感悟
Flink sink ES 写入 ES(带密码)
为什么要用Flink,怎么入门使用Flink?
Input length must be multiple of 8 when decrypting with padded cipher
Goodbye to the cumbersome Excel, mastering data analysis and processing technology depends on it
踏上编程之路,你必须要干的几件事
C语言的文件操作(一)
a different object with the same identifier value was already associated with the session
数据库上机实验5 数据库安全性
Anaconda配置环境指令
【LeetCode-SQL每日一练】——2. 第二高的薪水








