记录一个bug:
List[] edges = new LinkedList[numCourses];
Arrays.fill(edges, new LinkedList<>());
操作后,edges数组的全部元素都指向同一个LinkedList。而不是独立个体。
原因:
Arrays.fill 源码,第二个参数为 Object val
,所做操作也只是循环赋值而已
public static void fill(Object[] a, Object val) {
for (int i = 0, len = a.length; i < len; i++)
a[i] = val;
}
因此上述操作,就相当于:
Object val = new LinkedList<>
然后让a[i] = val
, 自然就指向同一对象了