本文最后更新于 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 -13741. 三个相等元素之间的最小距离 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 -13742. 网格中得分最大的路径 - 力扣(LeetCode)
题目类型
#记忆化搜索 #网格图DP
解题思路
示例代码
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 -13743. 循环划分的最大得分 - 力扣(LeetCode)
题目类型
#未解决 #状态机DP
解题思路
参考:这道题很神秘,以后再来解决吧!
示例代码
python
TODO