T4没写,三题五行
文章目录
- [5980. 将字符串拆分为若干长度为 k 的组](https://leetcode-cn.com/problems/divide-a-string-into-groups-of-size-k/)
- [5194. 得到目标值的最少行动次数](https://leetcode-cn.com/problems/minimum-moves-to-reach-target-score/)
- [5982. 解决智力问题](https://leetcode-cn.com/problems/solving-questions-with-brainpower/)
- [5983. 同时运行 N 台电脑的最长时间](https://leetcode-cn.com/problems/maximum-running-time-of-n-computers/)
5980. 将字符串拆分为若干长度为 k 的组
正则 ‘.{k}’ + 处理fill
import re
class Solution:
def divideString(self, s: str, k: int, fill: str) -> List[str]:
return list(re.findall('.{'+str(k)+'}',s+(fill*(k-len(s)%k) if len(s)%k else '') ))
5194. 得到目标值的最少行动次数
从大到小贪心,【偶数】转移到【偶数//2】,【奇数】转移到【奇数-1】
class Solution:
def minMoves(self, target: int, maxDoubles: int) -> int:
return target - 1 if target == 1 or maxDoubles == 0 else 1 + (self.minMoves(target - 1, maxDoubles) if target&1 else self.minMoves(target >> 1, maxDoubles-1) )
5982. 解决智力问题
倒序dp,数组开大点
class Solution:
def mostPoints(self, questions: List[List[int]]) -> int:
dp = [0] * (len(questions) + 100001)
for i in range(len(questions)-1,-1,-1):dp[i] = max(dp[i+1], questions[i][0] + dp[i + questions[i][1] + 1])
return dp[0]
5983. 同时运行 N 台电脑的最长时间
二分答案,参考榜一代码,原来这么简单。。
class Solution:
def maxRunTime(self, n: int, batteries: List[int]) -> int:
batteries.sort(reverse=True)
s = sum(batteries)
for b in batteries:
if b>s//n:
n-=1
s-=b
else:
return s//n