力扣第 448 场周赛

本文最后更新于 2 分钟前,文中所描述的信息可能已发生改变。

3536. 两个数字的最大乘积 - 力扣(LeetCode)

解题思路

暴力遍历,或排序后取两个最值

示例代码

python
class Solution:
    def maxProduct(self, n: int) -> int:
        nums = list(map(int, str(n)))
        ans = 0
        for p in combinations(range(len(nums)), 2):
            x, y = p
            ans = max(ans, nums[x] * nums[y])
        return ans
python
class Solution:
    def maxProduct(self, n: int) -> int:
        return reduce(mul, sorted(map(int, str(n)))[-2:])

3537. 填充特殊网格 - 力扣(LeetCode)

解题思路

递归,不断折半矩阵长度,当d==2时,填写矩阵

示例代码

python
class Solution:
    def specialGrid(self, N: int) -> List[List[int]]:
        m = pow(2, N)
        ans = [[0] * m for _ in range(m)]
        cnt = m * m - 1
        def dfs(i, j, d):
            nonlocal cnt
            if d == 1:
                return
            if d == 2:
                for ni, nj in (i, j), (i + 1, j), (i + 1, j + 1), (i, j + 1):
                    ans[ni][nj] = cnt
                    cnt -= 1
                return
            d = d // 2
            dfs(i, j, d)
            dfs(i + d, j, d)
            dfs(i + d, j + d, d)
            dfs(i, j + d, d)
            return
        dfs(0, 0, m)
        return ans

3538. 合并得到最小旅行时间 - 力扣(LeetCode)

解题思路

记忆化搜索,划分型 DP

  • i,当前索引
  • j,剩余合并次数
  • p,前一个索引

参考:划分型 DP:从记忆化搜索到递推(Python/Java/C++/Go)

示例代码

python
class Solution:
    def minTravelTime(self, l: int, n: int, k: int, position: List[int], time: List[int]) -> int:
        pre = list(accumulate(time, initial=0))
        @cache
        def dfs(i: int, j: int, p: int) -> int:
            if i == n - 1:
                return inf if j else 0
            res = inf
            t = pre[i + 1] - pre[p]
            for ni in range(i + 1, min(n, i + j + 2)):
                res = min(res, (position[ni] - position[i]) * t + dfs(ni, j - (ni - i - 1), i + 1))
            return res

        ans = dfs(0, k, 0)
        dfs.cache_clear()
        return ans

3539. 魔法序列的数组乘积之和 - 力扣(LeetCode)

解题思路

参考:

示例代码

python
TODO
LeetCode Weekly Contest 449
LeetCode Weekly Contest 447