Leetcode 3532. Path Existence Queries in a Graph I

  • [Leetcode 3532. Path Existence Queries in a Graph I](#Leetcode 3532. Path Existence Queries in a Graph I)
    • [1. 解题思路](#1. 解题思路)
    • [2. 代码实现](#2. 代码实现)

1. 解题思路

这一题算是一个比较典型的DSU的题目,我们就是不断地根据前后节点的距离将其进行聚类,然后考察query当中的两个节点是否属于同一个簇即可。

而关于DSU,它是非常经典的算法了,网上到处都是,我自己也写过一篇博客(《经典算法:并查集(DSU)结构简介》)作为备忘,因此这里就不过多展开了。

2. 代码实现

给出python代码实现如下:

python 复制代码
class DSU:
    def __init__(self, N):
        self.root = [i for i in range(N)]
        
    def find(self, k):
        if self.root[k] != k:
            self.root[k] = self.find(self.root[k])
        return self.root[k]
    
    def union(self, a, b):
        x = self.find(a)
        y = self.find(b)
        if x != y:
            self.root[y] = x
        return

class Solution:
    def pathExistenceQueries(self, n: int, nums: List[int], maxDiff: int, queries: List[List[int]]) -> List[bool]:
        dsu = DSU(n)
        for i in range(n-1):
            if nums[i+1] - nums[i] <= maxDiff:
                dsu.union(i, i+1)
        
        return [dsu.find(u) == dsu.find(v) for u, v in queries]

提交代码评测得到:耗时309ms,占用内存49.6MB。

相关推荐
Espresso Macchiato18 天前
Leetcode 3767. Maximize Points After Choosing K Tasks
leetcode medium·leetcode双周赛171·leetcode 3767
Espresso Macchiato18 天前
Leetcode 3765. Complete Prime Number
leetcode medium·leetcode双周赛171·leetcode 3765
Espresso Macchiato19 天前
Leetcode 3766. Minimum Operations to Make Binary Palindrome
leetcode medium·leetcode 3766·leetcode双周赛171
Espresso Macchiato1 个月前
Leetcode 3741. Minimum Distance Between Three Equal Elements II
滑动窗口·leetcode medium·leetcode 3741·leetcode周赛475
Espresso Macchiato3 个月前
Leetcode 3702. Longest Subsequence With Non-Zero Bitwise XOR
leetcode medium·异或操作·leetcode 3702·leetcode周赛470
Espresso Macchiato3 个月前
Leetcode 3694. Distinct Points Reachable After Substring Removal
滑动窗口·leetcode medium·leetcode双周赛166·leetcode 3694
Espresso Macchiato3 个月前
Leetcode 3698. Split Array With Minimum Difference
leetcode medium·分类讨论·leetcode周赛469·leetcode 3698
Espresso Macchiato3 个月前
Leetcode 3695. Maximize Alternating Sum Using Swaps
并查集·leetcode hard·dsu·uf·leetcode 3695·leetcode双周赛166
Espresso Macchiato4 个月前
Leetcode 3665. Twisted Mirror Path Count
动态规划·leetcode medium·leetcode 3665·leetcode双周赛164
Espresso Macchiato4 个月前
Leetcode 3669. Balanced K-Factor Decomposition
动态规划·质因数分解·leetcode medium·leetcode 3669·leetcode周赛465