算法题二-贪心算法类型
题目来自leetcode
强度:简单
给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。
1 |
|
1 |
|
1 |
|
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/number-of-steps-to-reduce-a-number-to-zero
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
这个没啥好讲的思路
就轮询->再判断奇数偶数
说里说一下判断奇数偶数的 (num&1)==1
a&b即a与b
a的二进制操作位与b的二进制操作数等于1 否则等于0
这里 11和13的二进制是1011和1101
1 |
|
再来一个带入这个实际情况的例子
14&1和7&1
1110&1 111&1
1 |
|
多数情况下 判断骑数偶数时 使用这种方法比使用运算符更省内存。
第二题 玩筹码 难度:简单
数轴上放置了一些筹码,每个筹码的位置存在数组 chips 当中。
你可以对 任何筹码 执行下面两种操作之一(不限操作次数,0 次也可以):
将第 i 个筹码向左或者右移动 2 个单位,代价为 0。
将第 i 个筹码向左或者右移动 1 个单位,代价为 1。
最开始的时候,同一位置上也可能放着两个或者更多的筹码。
返回将所有筹码移动到同一位置(任意位置)上所需要的最小代价。
1 |
|
1 |
|
1 |
|
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/play-with-chips
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
这一题说实话 读这个题目就很难,其他都还好;
思路:
根据
1 |
|
可以得到一个结论 奇数移到奇数 偶数移到偶数代价都为0
代价增加的主要原因是奇数-偶数 或者偶数-奇数的位移
代入示例二
这句话真是他妈的精华 示例二意思是位置2有3个筹码
位置3有二个筹码
把位置2的两个筹码位移到位置2 明显最优
得到结论 求得是奇数偶数较小的一方的总和
代码很简单 主要是理解 这他妈不是算法题 是理解题
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!