题目描述
你正在玩一个整数游戏。从整数 1 开始,期望得到整数 target 。
在一次行动中,你可以做下述两种操作之一:
递增,将当前整数的值加 1(即, x = x + 1)。 加倍,使当前整数的值翻倍(即,x = 2 * x)。 在整个游戏过程中,你可以使用 递增 操作 任意 次数。但是只能使用 加倍 操作 至多 maxDoubles 次。
给你两个整数 target 和 maxDoubles ,返回从 1 开始得到 target 需要的最少行动次数。
这是一道周赛题: leetcode-cn.com/problems/mi…
解题思路
算法
贪心,能除 2 就开整,不能先减 1,最后剩下的值 - 1 时需要"递增"的 steps
代码
/**
* @param {string} s
* @param {number} k
* @param {character} fill
* @return {string[]}
*/
var divideString = function(s, k, fill) {
const arr = []
let index = 0
while (index < s.length) {
let cur = new Array(k).fill(fill)
let count = 0
while (count < k && index < s.length) {
cur[count] = s[index++]
count++
}
arr.push(cur.join(''))
}
return arr
};