当前位置: 首页 > news >正文

力扣-图论-10【算法学习day.60】

前言

###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!


习题

1.颜色交替的最短路径

题目链接:1129. 颜色交替的最短路径 - 力扣(LeetCode)

题面:

贴上大佬代码:

class Solution {public int[] shortestAlternatingPaths(int n, int[][] redEdges, int[][] blueEdges) {// 标明颜色,这是很好的习惯哦。final int RED = 0;final int BLUE = 1;// 构建双层邻接表List<Integer>[][] 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]);}// 初始队列中同时含有蓝色源点和红色源点,并且我们也将相应颜色存入队列。Queue<int[]> 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;}
}

后言

上面是力扣图论专题,下一篇是其他的习题,希望有所帮助,一同进步,共勉!

http://www.lryc.cn/news/502595.html

相关文章:

  • 《Python WEB安全 库全解析》
  • Linux yum-config-manager命令异常
  • ios 开发配置蓝牙
  • geoserver(1) 发布sql 图层 支持自定义参数
  • Linux:network:添加ip的时候自动添加一个本地路由
  • go 集成nacos注册中心、配置中心
  • ssd202d-badblock-坏块检测
  • MySQL-练习-数据介绍
  • React框架:解锁现代化Web开发的新维度
  • 电阻功率,限流,等效电阻
  • Qt | 开发工具(top1)
  • Node.js express
  • ios h5中在fixed元素中的input被focus时,键盘遮挡input (van-popup、van-feild)
  • springboot整合lua脚本在Redis实现商品库存扣减
  • MySQL ON DUPLICATE KEY UPDATE影响行数
  • uniapp小程序 slot中无法传递外部参数的解决方案
  • umi实现动态获取菜单权限
  • Pytest-Bdd-Playwright 系列教程(14):Docstring 参数
  • 交互开发---测量工具(适用VTK或OpenGL开发的应用程序)
  • Qt 一个简单的QChart 绘图
  • 【Java笔记】LinkedList 底层结构
  • el-table组件树形数据修改展开箭头
  • 太速科技-FMC154-基于FMC 八路SFP+万兆光纤子卡
  • 记:排查设备web时慢时快问题,速度提升100%
  • 音视频入门基础:MPEG2-TS专题(13)——FFmpeg源码中,解析Section Header的实现
  • 根据PDF模板单个PDF导出到浏览器和多个PDF打包ZIP导出到浏览器
  • 如何创建一个基本的Spring Boot应用程序
  • 1.2 计算机网络的分类和应用(重要知识点)
  • @JsonSerialize失效解决
  • Docker部署WebRTC-Streamer