package
0.0.0-20241220224003-b7cf03a90b2b
Repository: https://github.com/szhou12/leetcode-go.git
Documentation: pkg.go.dev
# README
1140. Stone Game II
Solution idea
DFS
思路总结
- 关键词: DFS, Prefix Sum, Memoization (2-D 区间型)
- 为什么用于记忆化的 Memo 两个维度的长度都是
len(piles)
?- 第一维:比较好理解,代表起点位置,显然 piles 的任意位置都有可能是起点
- 第二维 (我的理解,不一定对):代表 M 的取值,任一 X 的取值都由 M 的值确定,也就是说,X 是一个关于 M 的函数 (
X = f(M)
)。X 代表长度,也就是,确定一个起点的offset。X 最长可以是整个 piles 的长度,也就是len(piles)
。M 确定 X 的上限。所以,第二维的长度也是len(piles)
。因为X <= 2M
,所以其实第二维的长度最长是len(piles) / 2
。但是,为了方便,直接用len(piles)
。
- Definition:
dfs(start, M)
:= max # stones that cur player can get by first X piles (1 <= X <= 2*M) frompiles[start:]