Leetcode 3607. Power Grid Maintenance

  • Leetcode 3607. Power Grid Maintenance
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3607. Power Grid Maintenance

1. 解题思路

这一题思路上首先是一个DSU的思路,将所有的连通网络计算出来,并对每一个网络的节点进行归类。然后我们需要对每一个网络当中的节点的状态进行一下维护,这里我们采用的是有序数组的方式,通过二分查找进行增删操作,然后每次query就是找出其中点的状态并进行更新。

当query操作为1时,我们就是要判断一下目标点的状态,如果当前其状态为在线,就直接返回其结果,反之在对应的簇当中返回最小节点或者-1;如果query操作为2时,我们将目标点下线并更新对应的簇当中的有效节点即可。

而关于DSU的相关内容,这里就不具体展开了,网上资料很多,我自己也有一篇水文《经典算法:并查集(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] = xreturnclass Solution:def processQueries(self, c: int, connections: List[List[int]], queries: List[List[int]]) -> List[int]:dsu = DSU(c+1)for u, v in connections:dsu.union(u, v)clusters = defaultdict(list)for i in range(1, c+1):u = dsu.find(i)clusters[u].append(i)ans = []for op, idx in queries:u = dsu.find(idx)i = bisect.bisect_left(clusters[u], idx)if op == 1:if i < len(clusters[u]) and clusters[u][i] == idx:ans.append(idx)elif len(clusters[u]) > 0:ans.append(clusters[u][0])else:ans.append(-1)else:if i < len(clusters[u]) and clusters[u][i] == idx:clusters[u].pop(i)return ans

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/88457.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/88457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源 python 应用 开发(三)python语法介绍

最近有个项目需要做视觉自动化处理的工具&#xff0c;最后选用的软件为python&#xff0c;刚好这个机会进行系统学习。短时间学习&#xff0c;需要快速开发&#xff0c;所以记录要点步骤&#xff0c;防止忘记。 链接&#xff1a; 开源 python 应用 开发&#xff08;一&#xf…

1-Kafka介绍及常见应用场景

Kafka 介绍 Apache Kafka 是一个开源的 分布式流处理平台&#xff0c;最初由 LinkedIn 开发&#xff0c;后捐赠给 Apache 软件基金会。它被设计用于高吞吐量、低延迟、可水平扩展地处理实时数据流。官网地址是&#xff1a;https://kafka.apache.org/ 以下是 Kafka 的核心介绍…

CH9121T电路及配置详解

目录1. CH9121T简介2. 原理图及接口2.1 参考电路2.2 CH9121T评估板2.3 差分端口2.4 网口灯显示2.5 晶振2.6 其他接口3. 使用手册及说明3.1 配置介绍3.2 默认参数3.3 串口波特率3.4 配置指令3.5 应用示例1. CH9121T简介 CH9121 是一款网络串口透传芯片&#xff0c;自带 10/100M…

科研数据可视化核心技术:基于 AI 与 R 语言的热图、火山图及网络图绘制实践指南

在学术研究竞争日趋激烈的背景下&#xff0c;高质量的数据可视化已成为科研成果呈现与学术传播的关键要素。据统计&#xff0c;超过 60% 的学术稿件拒稿原因与图表质量存在直接关联&#xff0c;而传统绘图工具在处理组学数据、复杂关联数据时&#xff0c;普遍存在效率低下、规范…

Windows体验macOS完整指南

一、虚拟机安装macOS专业方案1. 环境准备阶段硬件检测&#xff1a;进入BIOS&#xff08;开机时按Del/F2键&#xff09;确认开启VT-x/AMD-V虚拟化选项建议配置&#xff1a;i5十代以上CPU/16GB内存/256GB SSD软件准备&#xff1a;官网下载VMware Workstation 17 Pro获取Unlocker补…

【普及/提高−】洛谷P1577 ——切绳子

见&#xff1a;P1577 切绳子 - 洛谷 题目描述 有 N 条绳子&#xff0c;它们的长度分别为 Li​。如果从它们中切割出 K 条长度相同的绳子&#xff0c;这 K 条绳子每条最长能有多长&#xff1f;答案保留到小数点后 2 位(直接舍掉 2 位后的小数)。 输入格式 第一行两个整数 N …

imx6ull-裸机学习实验16——I2C 实验

目录 前言 I2C简介 基本特性​​ I2C 协议 起始位 停止位 数据传输 应答信号 I2C 写时序 I2C 读时序 I.MX6U I2C 简介 寄存器 地址寄存器I2Cx_IADR(x1~4) 分频寄存器I2Cx_IFDR 控制寄存器I2Cx_I2CR 状态寄存器I2Cx_I2SR 数据寄存器I2Cx_I2DR AP3216C 简介 …

【TCP/IP】5. IP 协议

5. IP 协议5. IP 协议5.1 概述5.2 IP 数据报格式5.3 无连接数据报传输5.3.1 首部校验5.3.2 数据分片与重组5.4 IP 数据报选项5.4.1 选项格式5.4.2 选项类型5.5 IP 模块的结构本章要点5. IP 协议 5.1 概述 IP 协议是 TCP/IP 协议簇的核心协议&#xff0c;位于网络层&#xff0…

Linux 服务器挖矿病毒深度处理与防护指南

在 Linux 服务器运维中&#xff0c;挖矿病毒是常见且危害较大的安全威胁。此类病毒通常会隐蔽占用大量 CPU 资源进行加密货币挖矿&#xff0c;导致服务器性能骤降、能耗激增&#xff0c;甚至被黑客远程控制。本文将从病毒特征识别、应急处理流程、深度防护措施三个维度&#xf…

MySQL数据表设计 系统的营销功能 优惠券、客户使用优惠券的设计

系统的营销功能营销功能概述&#xff1a;系统的营销功能主要是&#xff1a;市场活动管理、营销自动化、销售线索管理以及数据分析和报告等。‌ToC‌&#xff08;Consumer&#xff09;&#xff1a;面向个人消费者&#xff0c;满足日常消费需求。‌优惠券的种类&#xff1a;ToC的…

让 3 个线程串行的几种方式

1、通过join()的方式 子线程调用join()的时候&#xff0c;主线程等待子线程执行完再执行。如果让多个线程顺序执行的话&#xff0c;那么需要他们按顺序调用start()。/*** - 第一个迭代&#xff08;i0&#xff09;&#xff1a;* 启动线程t1 -> 然后调用t1.join()。* …

在 Vue 项目中关闭 ESLint 规则

在 Vue 2 项目中关闭 ESLint 规则有以下几种方法&#xff0c;根据您的需求选择合适的方式&#xff1a; 1. 完全禁用 ESLint 修改 vue.config.js&#xff08;推荐&#xff09; module.exports {// 关闭 ESLintlintOnSave: false }或修改 package.json {"scripts": {&…

电脑息屏工具,一键黑屏超方便

软件介绍 今天为大家推荐一款实用的PC端屏幕管理工具——CloseDsp。这款"息屏小能手"能一键关闭显示器&#xff0c;解决各种场景下的屏幕管理需求。 核心功能 CloseDsp最突出的特点是能瞬间关闭显示器屏幕。只需点击"关闭显示器"按钮&#xff0c;屏幕…

嵌入式调试LOG日志输出(以STM32为例)

引言在嵌入式系统开发中&#xff0c;调试是贯穿整个生命周期的关键环节。与传统PC端程序不同&#xff0c;嵌入式设备资源受限&#xff08;如内存、存储、处理器性能&#xff09;&#xff0c;且运行环境复杂&#xff08;无显示器、键盘&#xff09;&#xff0c;传统的断点调试或…

Zephyr的设备驱动模型

默认配置默认配置 boards/arm/nucleo_f401re/ ├── nucleo_f401re.dts ← 板卡设备树主入口 ├── nucleo_f401re_defconfig ← 默认 Kconfig 配置 ├── board.cmake ← CMake 构建入口overlay1.新增加驱动需要修改对应板的设备树文件&#xf…

Mysql字段没有索引,通过where x = 3 for update是使用什么级别的锁

没有索引时&#xff0c;FOR UPDATE 会锁住整个表 现在&#xff0c;你正在一本一本地翻看所有书&#xff0c;寻找“维修中”的书&#xff0c;并且你对管理员说&#xff1a;“在我清点和修改完之前&#xff0c;别人不能动这些书&#xff0c;也不能往这个范围里加新书&#xff01;…

TCP-与-UDP-协议详解:原理、区别与应用场景全解析

TCP 与 UDP 协议详解&#xff1a;原理、区别与应用场景全解析 在日常使用网络的过程中&#xff0c;我们经常听到 TCP 和 UDP 这两个词。你打开网页、发送消息、观看视频&#xff0c;背后都在使用 TCP 或 UDP 进行数据传输。那么这两个协议到底是怎么工作的&#xff1f;它们之间…

GitHub信息收集

目录 简介 一、入门搜索技巧 1. 基本关键词搜索 2. 文件类型限定搜索 3. 用户/组织定向搜索 二、精准定位技巧 1. 组合搜索条件 2. 排除干扰结果 3. 路径限定搜索 三、防御建议 四、法律与道德提醒 简介 GitHub作为全球最大的代码托管平台&#xff0c;存储着数十亿…

由 DB_FILES 参数导致的 dg 服务器无法同步问题

由 DB_FILES 参数导致的 dg 服务器无法同步问题 用户反映&#xff0c;dg 服务器数据从昨晚&#xff08;7月8日&#xff09;开始停止同步。 连接服务器发现没有 mrp 进程&#xff0c;并且 OPEN_MODE 参数也不正确。具体情况如下所示&#xff1a; SQL> select process, status…

Go语言泛型-泛型对代码结构的优化

在Go语言中,Go泛型-泛型对代码结构的优化部分主要探讨了泛型如何帮助我们优化代码结构、减少重复代码,并提高代码的可维护性、可读性和复用性。以下是详细内容: 一、引言 Go 1.18 引入了泛型,极大地提高了语言的灵活性。泛型使得我们可以编写更加通用、可复用且类型安全的…