leetcode 第 276 场周赛 笔记

128 阅读1分钟

5980. 将字符串拆分为若干长度为 k 的组

思路:先遍历字符串,分割长度为k的字符串,存入数组中,然后判断数组中的最后一个元素的长度是否符合要求,然后补齐字符串。

var divideString = function (s, k, fill) {
    let res = [], str = s, j = Math.ceil(s.length / k);
    for (let i = 0; i < j; i++) {
        res.push(str.slice(i * k, (i + 1) * k));
    }
    while (res[res.length - 1].length != k) {
        res[res.length - 1] = res[res.length - 1] + fill;
    }
    return res;
};

5194. 得到目标值的最少行动次数

思路:正推麻烦,就用target逆推,要判断target当前奇偶性,当是奇数时,target-1便偶数,当是偶数时就可除以二。

var minMoves = function (target, maxDoubles) {
    let res = 0;
    while (target > 1) {
        if (maxDoubles == 0) {
            res += target - 1
            break
        }
        if (target % 2 == 1) {
            res += 1
            target -= 1
        } else {
            res += 1
            target = target / 2
            maxDoubles -= 1
        }
    }
    return res;
};