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

刷题笔记26——图论二分图判定

世界上的事情,最忌讳的就是个十全十美,你看那天上的月亮,一旦圆满了,马上就要亏厌;树上的果子,一旦熟透了,马上就要坠落。凡事总要稍留欠缺,才能持恒。 ——莫言

  • visited数组是在如果有环的情况下,防止在图中一直绕圈设置的,类似于剪枝操作,走过了就没必要再走一遍

  • path是在探索过程中,记录此次的遍历路径,从而判断是否有环的

  • 如果是判断的话,visited是无法判断的,path是可以判断的

  • 二分图的题背会板子即可

785. 判断二分图:如果没访问就染色,访问过就判断染色是否匹配

class Solution {boolean[] visited;int[] color;boolean isB = true;public boolean isBipartite(int[][] graph) {int sz = graph.length;color = new int[sz];visited =new boolean[sz];for(int i=0;i<sz;i++){traverse(graph,i,1);}return isB;}void traverse(int[][] graph, int n, int col){if(visited[n]) return;visited[n] = true;color[n] = col;for(int node:graph[n]){if(visited[node]){if(color[node]!=(1-col)){isB = false;}}else{traverse(graph,node,1-col);}}}
}

886. 可能的二分法:有边的话就需要将两个节点分开,用二分图的思路

class Solution {// 遍历构图二分图boolean[] visited;int[] color;boolean isBi = true;public boolean possibleBipartition(int n, int[][] dislikes) {// 构造的是无向图visited = new boolean[n];color = new int[n];List<Integer>[] graph = generateGraph(n,dislikes);for(int i=0;i<n;i++){traverse(graph,i,1);}return isBi;}void traverse(List<Integer>[] graph,int n,int number){if(visited[n]) return;visited[n] = true;color[n] = number;for(int node:graph[n]){if(visited[node]){if(color[node]!=1-number){isBi = false;}}else{traverse(graph,node,1-number);}}}List<Integer>[] generateGraph(int n, int[][] dislikes){List<Integer>[] graph = new LinkedList[n];for(int i=0;i<n;i++){graph[i] = new LinkedList();}for(int i=0;i<dislikes.length;i++){graph[dislikes[i][0]-1].add(dislikes[i][1]-1);graph[dislikes[i][1]-1].add(dislikes[i][0]-1);}return graph;}
}
http://www.lryc.cn/news/177568.html

相关文章:

  • 网站整站优化-网站整站优化工具
  • 冲刺十五届蓝桥杯P0001阶乘求和
  • c++ 学习 之 运算符重载
  • 各种数据库表名长度限制整理
  • Go 里的超时控制
  • 一文彻底搞清楚Spark Schema
  • Nginx多出口IP解决代理端口数量限制,CentOS安装Nginx并开启https2.0
  • SpringBoot项目(百度AI整合)——如何在Springboot中使用语音文件识别 ffmpeg的安装和使用
  • 探索古彝文AI识别技术:助力中国传统文化的传承与发扬
  • mysql面试题2:说一说MySQL的架构设计?一条 MySQL 语句执行的步骤?
  • UPnP协议和SSDP协议
  • notepad++配置python2环境
  • 在ThinkAdmin中弹出层关闭后回调
  • vue3 和vue2 的比较
  • 算法通过村第八关-树(深度优先)黄金笔记|寻找祖先
  • postgresql|数据库|数据库测试工具pgbench之使用
  • 代码随想录Day51 | 309.最佳买卖股票时机含冷冻期
  • libopenssl 实现私钥加密公钥解密
  • 代码随想录 Day - 51|#309 最佳买卖股票时机含冷冻期|#714 买卖股票的最佳时机含手续费
  • .net 使用IL生成代理类实现AOP对比Java Spring Boot的AOP
  • 美容店预约小程序搭建流程
  • ppt 作图 如何生成eps格式
  • 渗透测试中的前端调试(上)
  • 跨境电商引流之Reddit营销,入门保姆级攻略
  • Linux下虚拟网卡的基本命令
  • conan入门(二十七):因profile [env]字段废弃导致的boost/1.81.0 在aarch64-linux-gnu下交叉编译失败
  • BFS专题7 多终点迷宫问题
  • ES6中对象新增了哪些扩展?
  • 蓝桥杯每日一题2023.9.22
  • vscode左键无法跳转到定义的文件