怎么在百度上搜到自己的网站,网站建设 豫icp备,黄页推广引流网站,网站免费源代码前言
###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程#xff08;例如想要掌握基础用法#xff0c;该刷哪些题#xff1f;#xff09;我的解析也不会做的非常详细#xff0c;只会提供思路和一些关键点#xff0c;力扣上的大佬们的题解质量是非…前言
###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程例如想要掌握基础用法该刷哪些题我的解析也不会做的非常详细只会提供思路和一些关键点力扣上的大佬们的题解质量是非常非常高滴 习题
1.颜色交替的最短路径
题目链接:1129. 颜色交替的最短路径 - 力扣LeetCode
题面:
贴上大佬代码:
class Solution {public int[] shortestAlternatingPaths(int n, int[][] redEdges, int[][] blueEdges) {// 标明颜色这是很好的习惯哦。final int RED 0;final int BLUE 1;// 构建双层邻接表ListInteger[][] adj new ArrayList[2][n];for (int i 0; i n; i) {adj[RED][i] new ArrayList();adj[BLUE][i] new ArrayList();}for (int[] edge : redEdges) {adj[RED][edge[0]].add(edge[1]);}for (int[] edge : blueEdges) {adj[BLUE][edge[0]].add(edge[1]);}// 初始队列中同时含有蓝色源点和红色源点并且我们也将相应颜色存入队列。Queueint[] q new LinkedList();q.offer(new int[] {RED, 0});q.offer(new int[] {BLUE, 0});// 双层数组存储距离。int[][] dists new int[2][n];Arrays.fill(dists[RED], Integer.MAX_VALUE);Arrays.fill(dists[BLUE], Integer.MAX_VALUE);dists[RED][0] 0;dists[BLUE][0] 0;while (!q.isEmpty()) {int[] current q.poll();int uColor current[0], u current[1];int vColor uColor ^ 1; // 异或切换 1 和 0等同于 1 - uColor得到下条边的颜色for (int v : adj[vColor][u]) {if (dists[vColor][v] ! Integer.MAX_VALUE) continue;dists[vColor][v] dists[uColor][u] 1;q.offer(new int[] {vColor, v});}}// 将双层数组中的距离合并取小无穷大改成 -1。int[] result new int[n];for (int i 0; i n; i) {result[i] Math.min(dists[RED][i], dists[BLUE][i]);if (result[i] Integer.MAX_VALUE) result[i] -1;}return result;}
}后言
上面是力扣图论专题下一篇是其他的习题希望有所帮助一同进步共勉