您如何检查一个数组是否是另一个数组的子序列?

语言尼龙

我正在寻找探索递归和动态编程的不同算法,这些算法检查一个arrayA是否为arrayB的子序列。例如,

arrayA = [1, 2, 3] 
arrayB = [5, 6, 1, 7, 2, 9, 3]

thus, arrayA is indeed a subsequence of arrayB. 

我尝试了几种不同的搜索,但似乎只能找到计算最长增长子序列的算法。

谢尔盖·卡里尼琴科(Sergey Kalinichenko)

由于必须将的所有元素匹配arrayA到的某些元素arrayB,因此您无需回溯换句话说,如果有两个arrayB与的元素匹配的候选arrayA,则可以选择最早的一个,而从不撤消选择。

因此,您不需要DP,因为可以使用简单的线性贪心策略:

bool isSubsequence(int[] arrayA, int[] arrayB) {
    int startIndexB = 0;
    foreach (int n in arrayA) {
        int next = indexOf(arrayB, startIndexB , n);
        if (next == NOT_FOUND) {
            return false;
        }
        startIndexB = next+1;
    }
    return true;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何检查数组是否在Python中的另一个数组中

如何测试一个数组是否是另一个数组的子集?

快速检查一个数组是否包含另一个数组的元素

检查一个数组中的每个元素是否在另一个数组中

检查一个数组是否是另一个数组的子集

如何检查另一个数组中是否存在相似的数组

如何检查一个数组是否包含另一个数组?

检查一个数组是否包含另一个数组的值

如何检查数组是否在javascript中包含另一个数组

如何使用LINQ检查一个数组(或列表)是否包含另一个数组(列表)

如何检查数组是否与Ruby中的另一个数组共享元素?

如何检查一个数组是否在另一个数组PHP中具有一个接一个的值?

如何检查数组的所有对象是否包含另一个数组?

如何检查一个数组是否是另一个数组的正确排序子集

Google BigQuery检查一个数组是否是另一个数组的超集/子集

检查一个数组的值是否与另一个数组的键匹配-PHP

如何检查另一个数组中是否存在键值对(数组中)?

检查一个数组是否包含另一个数组

如何检查单词是否落入一个或另一个数组?

检查另一个数组中一个数组的元素

JS检查一个数组是否嵌入在另一个数组中

检查一个数组是否包含在另一个数组中

检查一个数组是否是另一个数组的置换版本

检查一个数组中的所有值是否在另一个数组中

检查一个数组是否包含另一个数组的值

Numpy:检查一维数组是否是另一个数组的子数组

检查一个数组项是否包含在另一个数组项中

检查一个数组是否是另一个数组python的元素

雪花。如何检查子数组是否存在于另一个数组中?