力扣第 xxx 场周赛

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

3740. 三个相等元素之间的最小距离 I - 力扣(LeetCode)

题目类型

#哈希表

解题思路

参考:这道题很简单!

示例代码

python
class Solution:
    def minimumDistance(self, nums: List[int]) -> int:
        d = defaultdict(list)
        for i, v in enumerate(nums):
            d[v].append(i)
        ans = inf
        for v in d.values():
            if len(v) < 3:
                continue
            for i in range(1, len(v) - 1):
                res = 2 * (v[i + 1] - v[i - 1])
                if res < ans:
                    ans = res
        return ans if ans < inf else -1

3741. 三个相等元素之间的最小距离 II - 力扣(LeetCode)

题目类型

#哈希表

解题思路

参考:这道题很简单!

示例代码

python
class Solution:
    def minimumDistance(self, nums: List[int]) -> int:
        d = defaultdict(list)
        for i, v in enumerate(nums):
            d[v].append(i)
        ans = inf
        for v in d.values():
            if len(v) < 3:
                continue
            for i in range(1, len(v) - 1):
                res = 2 * (v[i + 1] - v[i - 1])
                if res < ans:
                    ans = res
        return ans if ans < inf else -1

3742. 网格中得分最大的路径 - 力扣(LeetCode)

题目类型

#记忆化搜索 #网格图DP

解题思路

参考:网格图 DP + 优化循环次数(Python/Java/C++/Go)

示例代码

python
class Solution:
    def maxPathScore(self, grid: List[List[int]], k: int) -> int:
        n, m = len(grid), len(grid[0])

        @cache
        def dfs(x, y, cost):
            if cost > k:
                return -inf
            if x == n - 1 and y == m - 1:
                return 0
            res = -inf
            if x + 1 < n:
                v = grid[x + 1][y]
                res = max(res, dfs(x + 1, y, cost + int(v > 0)) + v)
            if y + 1 < m:
                v = grid[x][y + 1]
                res = max(res, dfs(x, y + 1, cost + int(v > 0)) + v)
            return res

        ans = dfs(0, 0, 0)
        dfs.cache_clear()
        return ans if ans >= 0 else -1

3743. 循环划分的最大得分 - 力扣(LeetCode)

题目类型

#未解决 #状态机DP

解题思路

参考:这道题很神秘,以后再来解决吧!

示例代码

python
TODO
力扣第 169 场双周赛
力扣第 476 场周赛