相同含义的对象使用数组

暴力写法

List<Integer>[] redGraph = new List[n];
List<Integer>[] blueGraph = new List[n];
for (int i = 0; i < n; i++) {
    redGraph[i] = new ArrayList<>();
    blueGraph[i] = new ArrayList<>();
}

优雅写法

redGraph和blueGraph的作用完全相同,看作是数组的两个元素

// 错误写法, 这里只会new一次, 所以每个元素共用一个List,
List<Integer>[][] graphs = new List[2][n];
for (List[] graph : graphs) {
    Arrays.fill(graph, new ArrayList<>());
}
List<Integer>[][] graphs = new List[2][n];
for (List[] graph : graphs) {
    Arrays.setAll(graph, k->new ArrayList<>());
}

队列中使用int[]等数组类型作为泛型

图遍历防止重复访问:需要在发现节点后立即进行标记。不能在等待真正处理该节点的时候才标记。


   转载规则


《》 熊水斌 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
步骤: 通过根节点在前序遍历中的索引rootIndexAtPreorder找出根节点的值preorder[rootIndexAtPreorder] 借助前面生成的HashMap, 通过根节点的值反向找出根节点在中序序列inorder中的
2023-05-28
下一篇 
Kafka命令行使用启动# 注解版, 不可直接复制使用 # 前台启动 kafka-server-start.sh \ # 配置文件所在路径 /opt/module/kafka_2.13-3.3.1/config/server.propert
2023-05-27
  目录