【发布时间】:2016-07-24 08:15:37
【问题描述】:
我被分配了以下任务:
给定 - 2 个列表。第一个列表的大小为 N1,第二个列表的大小为 N2。每个列表没有相同的元素。 编写一段代码,用第一个和第二个列表中的元素创建一个新列表。这个列表也不应该有相同的元素。 还要估计代码的复杂性。
我写了以下代码:
public class Lists {
static ArrayList<Integer> getNewList(ArrayList<Integer> list1,
ArrayList<Integer> list2) {
ArrayList<Integer> tmp = new ArrayList<>();
for (Integer i : list1) {
tmp.add(i);
}
for (Integer i : list2) {
if (!list1.contains(i))
tmp.add(i);
}
return tmp;
}
public static void main(String[] args) {
Integer[] arr1 = {1, 2, 3, 14, 15, 16};
Integer[] arr2 = {3, 6, 7, 8, 14};
ArrayList<Integer> list1 = new ArrayList<>(Arrays.asList(arr1));
ArrayList<Integer> list2 = new ArrayList<>(Arrays.asList(arr2));
for (Integer i : getNewList(list1, list2)) {
System.out.print(i + " ");
}
}
}
并说 getNewList 方法的执行时间与 N1*N2 成正比。作为回复,我收到以下内容,没有任何解释 - “你错了,这段代码的复杂性不是 N1*N2”。
那么有人能说出正确答案吗?并解释复杂性是如何确定的?
【问题讨论】:
标签: java algorithm performance