本文已参与「新人创作礼」活动,一起开启掘金创作之路。
例如:
int[] a = {3, 1, 2, 5, 4, 6, 8, 7, 3, 2, 5, 9, 4};
int[] b = {2, 3, 4};
因为a中的第3、9、13 个元素分别就是b中的元素顺序,因此判断结果为True
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序列。
解题思路:
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);
}