将字符串拆分为若干长度为 k 的组
1 | 字符串 s 可以按下述步骤划分为若干长度为 k 的组: |
1 | 输入:s = "abcdefghi", k = 3, fill = "x" |
1 | 输入:s = "abcdefghij", k = 3, fill = "x" |
常规题,先分割,再填补。
1 | class Solution(object): |
得到目标值的最少行动次数
1 | 你正在玩一个整数游戏。从整数 1 开始,期望得到整数 target 。 |
1 | 输入:target = 5, maxDoubles = 0 |
1 | 输入:target = 19, maxDoubles = 2 |
1 | 输入:target = 10, maxDoubles = 4 |
这道题我们首先能想到的是,尽可能多的使用“加倍”操作。既然是从1开始,我们就想办法让输入变为1即可。在操作的过程中,我们需要考虑两种情况:当前值是奇数还是偶数。
如果是奇数,我们需要让他变成偶数,方便我们的“除2”操作。因此给当前数减去1即可
如果是偶数,我们又需要考虑两种情况。是否可以进行”除2“操作。
也就是我们需要对maxDoubles
的值进行判断。
如果maxDoubles
大于零,那我们正常进行除法操作即可。
如果maxDoubles
已经变为零,那我们也不需要一个一个的递减了,直接变为1即可。
1 | class Solution(object): |
解决智力问题
1 | 给你一个下标从0开始的二维整数数组 questions ,其中 questions[i] = [pointsi, brainpoweri]。 |
1 | 输入:questions = [[3,2],[4,3],[4,4],[2,5]] |
1 | 输入:questions = [[1,1],[2,2],[3,3],[4,4],[5,5]] |
这道题需要反向动态规划,即当前值的最大值是根据后面的值来得出的,因此我们先计算后面的值!
1 | class Solution(object): |