【文件属性】:
文件名称:leetcode不会-LC-Writeup:LC-Writeup
文件大小:2KB
文件格式:ZIP
更新时间:2021-06-30 03:23:25
系统开源
leetcode
不会LC-Writeup
问题:未交叉的线,
方法:自顶向下的动态规划
直觉:
让A和B成为我们的两个整数数组。
假设我们想在子数组A[0...i]和B[0...j]
(包括两端)中找到最大数量的未交叉线。
如果子数组共享相同的最后一位数字(
A[i]
==
B[j]
),则存在连接A[i]和B[j]
。
由于A[i]和B[j]属于子阵列的末端,连接它们的这条线不会与任何其他线相交。
因此,我们可以画这条线并查看剩余的子数组A[0...i-1]和B[0...j-1]
。
否则,子数组具有不同的最后一位数字
(
A[i]
!=
B[j]
)。
那么子阵列的至少一个末端不属于一条线(如果它们都有线,它们就会相交)。
这促使我们查看其中一个末端被移除的子数组(
A[0...i-1],
B[0...j]或A[0...i],
B[0...j-1]
)。
然后,答案等于生成最多未交叉线的任何一对子阵列。
算法:
让rec(i,j)成为计算子数组A[0...i]和B[0...j]中未交叉线的最大数量的函数。
基本情况:当一个或多个子数组为空时(如果i
==
-1或j
==
-1
,
【文件预览】:
LC-Writeup-master
----code.py(918B)
----README.md(2KB)