当前位置: 首页 > news >正文

Leetcode 3493. Properties Graph

  • Leetcode 3493. Properties Graph
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3493. Properties Graph

1. 解题思路

这一题的话是要考虑最终聚合的簇的个数,因此很明显就是一个并查集的典型题目。因此,我们只需要创建一个并查集,然后两两考察其各自的关联关系即可。

而关于并查集的相关内容,网上已经有很多了,我自己也有一篇拙作(经典算法:并查集(DSU)结构简介)来作备忘。所以这里就不过多展开了,有兴趣的读者可以自行了解一下相关的内容。

2. 代码实现

给出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 numberOfComponents(self, properties: List[List[int]], k: int) -> int:
        elems = [set(x) for x in properties]
        n = len(properties)
        dsu = DSU(n)
        for i in range(n-1):
            for j in range(i+1, n):
                intersect = len(elems[i] & elems[j])
                if intersect >= k:
                    dsu.union(i, j)
        clusters = [dsu.find(i) for i in range(n)]
        return len(set(clusters))

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

相关文章:

  • SpringCloud-consul
  • 好用的Markdown阅读编辑器Typora破解记录
  • Midscene.js自然语言驱动的网页自动化全指南
  • 航拍图像阴影自动检测去除算法研究(大纲)
  • C++——权限初识
  • 深度剖析:复制带随机指针的链表算法实现
  • C++STL(三) :list的模拟实现
  • 使用Kubesec检查YAML文件安全
  • Django项目之订单管理part5
  • 前后端+数据库的项目实战:hbu迎新网-较复杂(下)javaweb
  • 运费服务模块通用需求分析
  • 算法刷题整理合集(七)·【算法赛】
  • Java面试黄金宝典12
  • STM32基础教程——PWM驱动LED呼吸灯
  • 【数理基础】【概率论与数理统计】概率论与数理统计本科课程总结、资料汇总、个人理解
  • 《AI大模型开发笔记》企业RAG技术实战(二)
  • AI比人脑更强,因为被植入思维模型【19】三脑理论思维模型
  • 我未来计划的Computer Use产品与对照组,即迷你版的AIGC中文脚本语言的区别
  • 本地部署Dify 添加Ollama模型DeepSeek
  • 2024年数维杯数学建模C题天然气水合物资源量评价解题全过程论文及程序
  • 见微知沪|科学既要勇攀高峰,又要放低身段
  • 广西北流出现强降雨,1人被洪水冲走已无生命体征
  • 中国驻美大使:远离故土的子弹库帛书正随民族复兴踏上归途
  • 车建兴被留置:跌落的前常州首富和红星系重整迷路
  • 回望星河深处,唤醒文物记忆——读《发现武王墩》
  • 4月新增社融1.16万亿,还原地方债务置换影响后信贷增速超过8%