【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 条路:

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

相关推荐
怪兽学LLM14 小时前
LeetCode 21 合并两个有序链表:彻底理解虚拟头节点(Dummy)套路
python·leetcode·链表
_日拱一卒15 小时前
LeetCode:22括号生成
算法·leetcode·职场和发展
洛水水16 小时前
【力扣100题】88.多数元素
数据结构·算法·leetcode
洛水水16 小时前
【力扣100题】87.只出现一次的数字
数据结构·算法·leetcode
风筝在晴天搁浅17 小时前
LeetCode CodeTop 82.删除排序链表中的重复元素Ⅱ
算法·leetcode·链表
洛水水17 小时前
【力扣100题】84.字符串解码
算法·leetcode·职场和发展
洛水水17 小时前
【力扣100题】89.下一个排列
数据结构·算法·leetcode
洛水水17 小时前
【力扣100题】90.寻找重复数
算法·leetcode·职场和发展
alphaTao18 小时前
LeetCode 每日一题 2026/6/8-2026/6/14
算法·leetcode
想吃火锅10051 天前
【leetcode】14.最长公共前缀js
算法·leetcode·职场和发展