Arrays 两个排序数组中的最大和路径

Arrays 两个排序数组中的最大和路径,arrays,algorithm,Arrays,Algorithm,我想解决一个来自极客的问题- 给定两个数组,任务是找到从任何数组的开始到任何数组结束的最大和路径。我们只能在公共点从一个阵列切换到另一个阵列 设两个数组为A和B,大小分别为M和N 路径从任意数组A或B的起点开始,并在任意数组A或B结束。 对于非公共点,路径沿当前阵列的正确方向继续,我们只能在公共点切换阵列。因此,在这些共同点上,我们有两个方向要遵循 e、 g 数组A是2,3,7,10,12。 数组B是1,5,7,8 我们可以从。 2 -> 3 -> 7 -> 10 -> 12. 或 2 ->

我想解决一个来自极客的问题-

给定两个数组,任务是找到从任何数组的开始到任何数组结束的最大和路径。我们只能在公共点从一个阵列切换到另一个阵列

设两个数组为A和B,大小分别为M和N

路径从任意数组A或B的起点开始,并在任意数组A或B结束。 对于非公共点,路径沿当前阵列的正确方向继续,我们只能在公共点切换阵列。因此,在这些共同点上,我们有两个方向要遵循

e、 g

数组A是2,3,7,10,12。 数组B是1,5,7,8

我们可以从。 2 -> 3 -> 7 -> 10 -> 12. 或 2 -> 3 -> 7 -> 8. 我们也可以从一开始。 1 -> 5 -> 7 -> 8. 或 1->5->7->10->12

在寻找解决方案时,我在以下位置找到了解决方案:


我自己也做了一些调查,我认为解决方案是不正确的。如果阵列中有多个公共点,则会失败

如果解决方案正确,请帮助我理解该解决方案,或者给我一个有效的解决方案

我的理解:我认为如果我们试图从图的角度来理解它,这是一个在DAG中寻找最大路径的问题。如果我没有错,我们可以设计一个动态规划公式。我不能做这个公式

编辑:我的理解是,如果我们有重复的共同点,它将失败。例如 答:2,3,6,6,8,10,13,14。
B:1,5,6,9,10,12,14

这个算法是正确的

首先,假设没有多个重复点。两个数组共有k个点。因此,该算法将两个数组沿公共点分成k+1个不同的部分。例如,5和10在以下阵列中很常见:

a = [0,2,5,7,10,11]
b = [1,3,5,6,10,12]
因此,阵列分为3个部分:

a变成[0,2],[7],[11]

b变成[1,3],[6],[12]

然后为所有k+1零件选择两个较大的段,此处[1,3]从b中选择。[7] 从a和b中[12]并将它们全部添加到结果中。res=4+7+12=23

然后简单地将所有公共点添加到最终结果中。res=23+5+10=38


该算法通过简单地合并两个数组中的重复值来解决重复问题。因此,如果在两个数组中有三个5,而不是一个数组,那么在两个数组中都会简单地考虑单个15。如果a中有三个'5',而b中有两个'5',则其处理方式与[10,5]和[10]相同,因此a中最后一个'5'不被视为公共点

我相信这个解决方案是不正确的——你知道,你可以测试一下。有3种语言的实际代码,它们甚至有一个指向IDE的链接,您可以在其中运行它。您认为您的示例的输出是什么?它的输出是什么?DAG?不是每一对都有一个循环吗?我想应该是一个DAG,因为我们可以从左到右。对不起,我的问题格式太差了。我指的是输入,第一个数组中有三个5,第二个数组中有一个。所以有三种方法可以从第一个数组跳到第二个数组