跳到主要内容

785.判断二分图

链接:785.判断二分图
难度:Medium
标签:深度优先搜索、广度优先搜索、并查集、图
简介:给定一个无向图 graph,当这个图为二分图时返回 true。

题解 1 - typescript

  • 编辑时间:2020-07-16
  • 执行用时:84ms
  • 内存消耗:38MB
  • 编程语言:typescript
  • 解法介绍:遍历后采取红绿刷色。
function isBipartite(graph: number[][]): boolean {
enum Color {
red,
green,
none,
}
const len = graph.length;
let valid = true;
const colors = new Array<Color>(len).fill(Color.none);
for (let i = 0; i < len && valid; i++) {
colors[i] === Color.none && dfs(i, Color.red);
}
return valid;
function dfs(node: number, color: Color): void {
colors[node] = color;
const newColor = color === Color.red ? Color.green : Color.red;
for (const neighbor of graph[node]) {
if (colors[neighbor] === Color.none) {
dfs(neighbor, newColor);
if (!valid) return;
} else if (colors[neighbor] !== newColor) {
valid = false;
return;
}
}
}
}