Leetcode第 276 场周赛

简介: Leetcode第 276 场周赛

第一题

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


本题思路就是跳跃循环来输出每段同长度为k的值,如果最后长度可能会小于k则需要添加fill,则添加fill的个数是k - 剩余字符的长度。最后输出即可。


代码可能优化不是很高,但是也希望能给大家带来帮助!


class Solution:
    def divideString(self, s: str, k: int, fill: str) -> List[str]:
        res = []
        for i in range(k,len(s)+k,k):
            res.append(s[i-k:i])
        for i in res:
            if len(i) != k:
                res[-1] = i+fill*(k - len(i))
        return res


时间复杂度为On。


第二题

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


本题其实就是一个思维题,不需要用什么dp,dfs什么之类的高级解法。由题可得有两种方法来进行增加数,直到获取目标值。


递增,将当前整数的值加 1(即, x = x + 1)。


加倍,使当前整数的值翻倍(即,x = 2 * x)。


因为目标值题目已经给了,需要我们判断需要几步才能达到目标值。本题我们不需要用固定的思维—从1开始加或乘,我们可以反过来,用题目给的目标值来进行减法和除法。直到目标值为1的时候记录一共有多少步。


代码块:


class Solution:
    def minMoves(self, target: int, maxDoubles: int) -> int:
        res = 0
        while target != 1:
            if maxDoubles != 0 and target %2 ==0:
                target = target /2
                maxDoubles -= 1
                res += 1
            elif maxDoubles == 0:
                res += int(target - 1)
                target = 1
            else:
                target -= 1
                res += 1
        return res


第三题

解决智力问题


本题在这次周赛的时候让我觉得我自己就是智力有问题我知道本题是用dp来解决,但是我就是写不出来,一直卡在这卡了一个小时多,因为第一次参加周赛有点紧张就没写出来。


我看题解有正向dp和逆向dp,其实两种思路是一样的,只不过逆向稍微方便一些,但是我还是用的正向哈哈哈。


class Solution:
    def mostPoints(self, questions: List[List[int]]) -> int:
        dp = [0 for i in range(len(questions) + 1)]
        for i in range(len(questions)):
            p,b = questions[i]
            dp[i+1] = max (dp[i+1],dp[i])
            j = min(len(questions),i + b + 1)
            dp[j] = max(dp[i] + p , dp[j])
        return dp[len(questions)]


相关文章
|
21天前
|
Go
golang力扣leetcode 第 291 场周赛
golang力扣leetcode 第 291 场周赛
41 0
|
21天前
|
Go vr&ar
golang力扣leetcode 第 288 场周赛
golang力扣leetcode 第 288 场周赛
36 0
|
21天前
|
Go
golang力扣leetcode 第 286 场周赛
golang力扣leetcode 第 286 场周赛
39 0
|
21天前
|
Go
golang力扣leetcode第 294 场周赛
golang力扣leetcode第 294 场周赛
35 0
|
21天前
|
算法 Java Go
golang力扣leetcode 第 293 场周赛
golang力扣leetcode 第 293 场周赛
61 0
|
21天前
|
Go
golang力扣leetcode 第 290 场周赛
golang力扣leetcode 第 290 场周赛
29 0
|
21天前
|
Go C++
golang力扣leetcode 第 284 场周赛
golang力扣leetcode 第 284 场周赛
42 0
|
8月前
|
算法 Android开发
LeetCode 周赛上分之旅 #48 一道简单的树上动态规划问题
学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。
48 1
|
21天前
|
Go
golang力扣leetcode 第 292 场周赛
golang力扣leetcode 第 292 场周赛
42 0
|
21天前
|
存储
Leetcode第382场周赛
```markdown 给定字符串`s`,计算按键变更次数,即使用不同键的次数,不考虑大小写差异。例如,`"aAbBcC"`变更了2次。函数`countKeyChanges`实现此功能。另外,求满足特定模式子集最大元素数,`maximumLength`函数使用`TreeMap`统计次数,枚举并构建子集,返回最大长度。最后,Alice和Bob玩鲜花游戏,Alice要赢需满足鲜花总数奇数、顺时针在[1,n]、逆时针在[1,m],返回满足条件的(x, y)对数,可通过奇偶性分类讨论求解。 ```
15 1