LeetCode冲刺:Day33

发布于 2022-12-10  42 次阅读


被统计折磨了一天,晚上有点没心思做题……

1. 计算字符串的数字和

难度

  • Easy
  • Medium
  • Hard

完成情况

  • 独立完成
  • 参考思路
  • 参考答案

思路

按题意模拟即可。

代码

class Solution:
    def digitSum(self, s: str, k: int) -> str:
        while(len(s) > k):
            t = ""
            sum = 0
            for i in range(len(s)):
                sum += int(s[i])
                if i == len(s) - 1 or (i + 1) % k == 0:
                    t += str(sum)
                    sum = 0
            s = t
        return s

2. 完成所有任务需要的最少轮数

难度

  • Easy
  • Medium
  • Hard

完成情况

  • 独立完成
  • 参考思路
  • 参考答案

思路

差点被绕进去了。

首先要明白,要最少轮数,则尽可能安排3个任务一起做,只有凑不齐3的时候,再去补2。显然,一个数模3,只有0、1、2三种情况,第一种情况直接加上商即可,第二种情况和第三种情况要加上商的向下取整再加一。因为第二种情况要拆除一个3,和1凑成两个2;第三种情况则是刚好多出一个2。还要注意,唯独1是特殊的。因为此时没有多余的3能拆,故必须返回-1。

代码

class Solution:
    def minimumRounds(self, tasks: List[int]) -> int:
        dic = {}
        ans = 0
        for task in tasks:
            if task not in dic: dic
= 1 else: dic
+= 1 for cnt in dic.values(): if cnt == 1: return -1 ans += int(cnt / 3) if cnt % 3 != 0: ans += 1 return ans

3. 转角路径的乘积中最多能有几个尾随零

难度

  • Easy
  • Medium
  • Hard

完成情况

  • 独立完成
  • 参考思路
  • 参考答案

思路

参考这篇

累乘能得到的尾随0数量,实际上跟所有数字中总的因子2和因子5的最小数量有关,而数字范围有限,所以可以先递归枚举所有数字中因子2、5的数量。

要使得数量最多,显然要路径最长,那么可以枚举由上到下过程中左右拐弯,和由下到上左右拐弯的情况。

代码

4. 相邻字符不同的最长路径

难度

  • Easy
  • Medium
  • Hard

完成情况

  • 独立完成
  • 参考思路
  • 参考答案

思路

参考这篇

有点烦躁,总是出错。

代码