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)]


目录
相关文章
|
6月前
|
Go
golang力扣leetcode 第 291 场周赛
golang力扣leetcode 第 291 场周赛
63 0
|
6月前
|
Go vr&ar
golang力扣leetcode 第 288 场周赛
golang力扣leetcode 第 288 场周赛
55 0
|
6月前
|
Go
golang力扣leetcode 第 286 场周赛
golang力扣leetcode 第 286 场周赛
59 0
|
算法 Android开发
LeetCode 周赛上分之旅 #48 一道简单的树上动态规划问题
学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。
68 1
|
6月前
|
Go
golang力扣leetcode第 294 场周赛
golang力扣leetcode第 294 场周赛
55 0
|
6月前
|
算法 Java Go
golang力扣leetcode 第 293 场周赛
golang力扣leetcode 第 293 场周赛
83 0
|
6月前
|
Go
golang力扣leetcode 第 290 场周赛
golang力扣leetcode 第 290 场周赛
53 0
|
6月前
|
Go C++
golang力扣leetcode 第 284 场周赛
golang力扣leetcode 第 284 场周赛
60 0
|
6月前
|
Go
golang力扣leetcode 第 292 场周赛
golang力扣leetcode 第 292 场周赛
68 0
|
6月前
|
存储
Leetcode第383场周赛
在LeetCode第383场周赛中,选手完成了3道题目。第一题是关于边界上的蚂蚁,蚂蚁根据非零整数数组nums的值移动,返回蚂蚁返回边界上的次数。解题方法是计算数组累加和为0的次数。第二题涉及计算网格的区域平均强度,给定一个灰度图像和阈值,返回每个像素所属区域的平均强度。解题关键在于理解相邻像素和区域定义,并计算平均强度。第三题是恢复单词初始状态的最短时间问题,通过移除前k个字符并添加k个字符,求恢复原词所需的最短时间。解题策略是检查去除前k个字符后的子串是否能作为原词的前缀。
34 1
Leetcode第383场周赛
下一篇
无影云桌面