【LeetCode】每日一题 2023_12_7 重新规划路线(DFS/BFS)

文章目录

刷题前唠嗑


LeetCode?启动!!!

这题好眼熟,怎么这几天都是这类问题!

题目:重新规划路线

题目链接:1466. 重新规划路线

题目描述

代码与解题思路

go 复制代码
func minReorder(n int, connections [][]int) (ans int) {
    g := make([][][]int, n)
    for _, v := range connections {
        x, y := v[0], v[1]
        // 第一个参数是正常存坐标, 第二个参数代表的是指向, 指向为 1 代表 x->y
        g[x] = append(g[x], []int{y, 1}) 
        g[y] = append(g[y], []int{x, 0})
    }
    var dfs func(int, int)
    dfs = func(cur, father int) {
        for _, v := range g[cur] {
            if v[0] != father { // 只向叶子节点 dfs
                if v[1] == 1 {  // 如果是从 0 节点方向往外指, 就让 ans++
                    ans++
                }
                dfs(v[0], cur)
            }
        }
    }
    dfs(0, -1)
    return ans
}

这道题目我思路的核心就是数箭头,举个例子:

从 0 到叶子节点有三个指向箭头,就需要改 3 条路:

从 0 到叶子节点有两个指向箭头,就需要改 2 条路:

从题目的红色修改箭头就能看出。

相关推荐
听取WA声一片(无恶意)10 小时前
CSP-J/CSP-S 深度优先搜索(DFS)完全讲义
c++·算法·深度优先
Nil20811 小时前
leetcode 98验证二叉搜索树
算法·leetcode·职场和发展
时针滴滴答啊15 小时前
最大子数组和
算法·leetcode·职场和发展
重生之后端学习17 小时前
15. 三数之和[中等]✅
java·数据结构·算法·leetcode·职场和发展
Nil20818 小时前
leetcode 108有序数组转换为二叉搜索树
数据结构·算法·leetcode
hn小菜鸡18 小时前
LeetCode 763、划分字母区间
数据结构·算法·leetcode
Nil20818 小时前
leetcode 102二叉树的层序遍历
算法·leetcode·职场和发展
zander25818 小时前
LeetCode 322. 零钱兑换
算法·深度优先
土司大王20 小时前
LeetCode hot100——相交链表
算法·leetcode·链表
土司大王20 小时前
LeetCode hot100——回文链表
算法·leetcode·链表