【算法题】给定两个数组a和b,判断a中是否有全局顺序出现的b序列

例如:java

int[] a = {3, 1, 2, 5, 4, 6, 8, 7, 3, 2, 5, 9, 4};
int[] b = {2, 3, 4};

由于a中的第三、九、13 个元素分别就是b中的元素顺序,所以判断结果为Trueide

int[] a = {3, 1, 2, 5, 4, 6, 8, 7, 3, 2, 5, 9, 4};
int[] b = {1, 9, 3};

这种状况就为false,由于a中没有全局顺序出现的1, 9, 3序列。code

解题思路:

public boolean  test() {

        int n = 0;

        int[] a = {3, 1, 2, 5, 4, 6, 8, 7, 3, 2, 5, 9,4};

        int[] dest = {2, 3, 9};

        int[] index = new int[dest.length];

        for (int i = 0; i < dest.length; i++) {
            for (int i1 = n; i1 < a.length; i1++) {
                if (dest[i] == a[i1]) {
                    n = index[i] = i1;
                    break;
                }
            }
        }
      return  isIncrease(index,index.length);
}


private boolean isIncrease(int[] x, int n) {
    if (n == 1) {
        return true;
    }
    return (x[n - 1] >= x[n - 2]) && isIncrease(x, n - 1);
}
相关文章
相关标签/搜索