【LeetCode】每日一题 2023_11_14 阈值距离内邻居最少的城市(Floyd 最短路算法)

文章目录

  • 刷题前唠嗑
    • 题目:阈值距离内邻居最少的城市
    • 题目描述
    • 代码与解题思路
    • 随机挑选一个大佬的题解 CV
  • 结语

刷题前唠嗑

【LeetCode】每日一题 2023_11_14 阈值距离内邻居最少的城市(Floyd 最短路算法)_第1张图片
LeetCode? 启动!!!

今天的题目也是重量级,看到这个题目的名字,看到这张图,虽然是个中等题,但感觉他一定不简单!(其实看到这个图,最短路问题已经在我脑中浮现了,ptsd 了呜呜)

题目:阈值距离内邻居最少的城市

题目链接:1334. 阈值距离内邻居最少的城市

题目描述

【LeetCode】每日一题 2023_11_14 阈值距离内邻居最少的城市(Floyd 最短路算法)_第2张图片

代码与解题思路

实话实说,不会图论,我决定直接不浪费时间

所以,B 站收藏+1,下次一定好好学习:
【LeetCode】每日一题 2023_11_14 阈值距离内邻居最少的城市(Floyd 最短路算法)_第3张图片

随机挑选一个大佬的题解 CV

func findTheCity(n int, edges [][]int, distanceThreshold int) (ans int) {
    w := make([][]int, n)
    for i := range w {
        w[i] = make([]int, n)
        for j := range w[i] {
            w[i][j] = math.MaxInt / 2 // 防止加法溢出
        }
    }
    for _, e := range edges {
        x, y, wt := e[0], e[1], e[2]
        w[x][y], w[y][x] = wt, wt
    }

    f := w
    for k := 0; k < n; k++ {
        for i := 0; i < n; i++ {
            for j := 0; j < n; j++ {
                f[i][j] = min(f[i][j], f[i][k]+f[k][j])
            }
        }
    }

    minCnt := n
    for i, dis := range f {
        cnt := 0
        for j, d := range dis {
            if j != i && d <= distanceThreshold {
                cnt++
            }
        }
        if cnt <= minCnt { // 相等时取最大的 i
            minCnt = cnt
            ans = i
        }
    }
    return ans
}

结语

我一定找一个时间把最近遇到的算法都学一遍,一定

你可能感兴趣的:(LeetCode,每日一题,算法,leetcode,职场和发展)