前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode笔记:Weekly Contest 276

LeetCode笔记:Weekly Contest 276

作者头像
codename_cys
发布2022-04-13 16:30:33
1990
发布2022-04-13 16:30:33
举报
文章被收录于专栏:我的充电站

1. 题目一

给出题目一的试题链接如下:

1. 解题思路

这题没啥好多说的,就是先用fill字符补充一下,然后进行一下切分即可。

2. 代码实现

给出python代码实现如下:

代码语言:javascript
复制
class Solution:
    def divideString(self, s: str, k: int, fill: str) -> List[str]:
        n = len(s)
        if n % k != 0:
            t = k - n % k
            s = s + t * fill
            n += t
        return [s[i:i+k] for i in range(0, n, k)]

提交代码评测得到:耗时65ms,占用内存14MB。

2. 题目二

给出题目二的试题链接如下:

1. 解题思路

这一题第一反应事动态规划,后来仔细一想发现犯不着,因为显然乘法由于加法,且越靠后发生效果越好,因此,我们只需要反向推导即可。

2. 代码实现

给出python代码实现如下:

代码语言:javascript
复制
class Solution:
    def minMoves(self, target: int, maxDoubles: int) -> int:
        res = 0
        while target != 1 and maxDoubles > 0:
            if target % 2 == 1:
                res += 2
            else:
                res += 1
            target = target // 2
            maxDoubles -= 1
        return res + target - 1

提交代码评测得到:耗时32ms,占用内存14.4MB。

3. 题目三

给出题目三的试题链接如下:

1. 解题思路

这一题就是简单的动态规划了,很基础的题目,就不过多展开了。

2. 代码实现

给出python代码实现如下:

代码语言:javascript
复制
class Solution:
    def mostPoints(self, questions: List[List[int]]) -> int:
        n = len(questions)
        
        @lru_cache(None)
        def dp(idx):
            if idx >= n:
                return 0
            p, s = questions[idx]
            return max(dp(idx+1), p + dp(idx+s+1))
        
        return dp(0)

提交代码评测得到:耗时1640ms,占用内存202.6MB。

4. 题目四

给出题目四的试题链接如下:

1. 解题思路

这一题很有意思,是一道智力题。

这一题的关键在于想通一点,那就是,如果我们每分钟都换一次电池,每次都是用电量最多的n节电池,那么,正常情况下,我们总能够尽可能平均地使用我们的电池,使得所有的电量都能够被最有效的利用起来。

那么,假设电量总和为s,我们能够使用的时间就是

\lfloor \frac{s}{n} \rfloor

但是,这里我们需要考察一下特殊情况,即在什么情况下,会有额外的电量无法被利用起来。显然,就是当某一些电池电量特别多,以至于哪怕从头开始消耗,也无法将其消耗完全时,此时这节电池将会有多余的电量被余留下来。

因此,我们只需要首先将电池按照电量进行排序,然后如果某一节电池电量会被余留,那么,我们就令其常亮,此时我们就从总电量当中扣除这节电池,然后需要考虑的总的电池位就从

n

修正为了

n-1

,然后继续考察下面的情况即可。

2. 代码实现

给出pyhton代码实现如下:

代码语言:javascript
复制
class Solution:
    def maxRunTime(self, n: int, batteries: List[int]) -> int:
        batteries = sorted(batteries, reverse=True)
        s = sum(batteries)
        
        for h in batteries:
            if h <= s // n:
                return s // n
            n -= 1
            s -= h

提交代码评测得到:耗时1059ms,占用内存28.9MB。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/01/16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 题目一
    • 1. 解题思路
      • 2. 代码实现
      • 2. 题目二
        • 1. 解题思路
          • 2. 代码实现
          • 3. 题目三
            • 1. 解题思路
              • 2. 代码实现
              • 4. 题目四
                • 1. 解题思路
                  • 2. 代码实现
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档