例如
Array1={1,2,3,8,9}
Array2={2,8,9}
CO(array1,array2) ----- TRUE
Array1={1,8,5,4,7,6}
Array2={8,1,7} ----- False
我想知道如何通过递归做到这一点
答案 0 :(得分:0)
您有条件。具有以下内容:
true
(基本情况)false
(基本情况)这里有优化的可能性。与其创建新的数组,不如使用一个辅助方法,该方法具有2个额外的参数,且当前索引分别为Array1和Array2。逻辑是相同的,但是您可以用两个零来调用它,并且第一个元素始终是该索引,如果索引是长度,则认为Array为空。
答案 1 :(得分:0)
我的一部分不想从您那里得到实现的乐趣。另一部分确实喜欢简单的递归问题。今天另一部分赢了。
这与@Sylwester提供的答案完全相同,但是使用Java而不是英语。
import java.util.Arrays;
import java.util.List;
public class Comparer {
public static void main(String[] args) {
System.out.println(new Comparer().isOrderedSubset(Arrays.asList(1, 2, 3, 8, 9), Arrays.asList(2, 8, 9)));
System.out.println(new Comparer().isOrderedSubset(Arrays.asList(1, 8, 5, 4, 7, 6), Arrays.asList(8, 1, 7)));
}
private boolean isOrderedSubset(List<Integer> list1, List<Integer> list2) {
System.out.println(list1 + " vs " + list2);
if (list2.isEmpty()) {
return true;
}
if (list1.isEmpty()) {
return false;
}
if (list1.get(0) == list2.get(0)) {
list1 = list1.subList(1, list1.size());
list2 = list2.subList(1, list2.size());
} else {
list1 = list1.subList(1, list1.size());
}
return isOrderedSubset(list1, list2);
}
}