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

千问 LeetCode 2076.处理含限制条件的好友请求 public boolean[] friendRequests(int n, int[][] restrictions,

这是一道经典的并查集Union-Find应用题。 核心思路解析问题本质我们需要维护一组动态变化的“朋友圈”连通分量。每当有一个好友请求时我们需要判断如果同意这个请求会不会导致某些被禁止的人restrictions变成朋友直接或间接如果不会违反限制就同意请求合并集合如果会违反就拒绝请求保持原状。并查集的作用并查集非常适合处理这种“动态连通性”问题。它可以高效地判断两个元素是否在同一个集合中以及合并两个集合。处理流程初始化并查集每个人最初都是独立的。遍历每一个好友请求 (u, v)找到 u 和 v 的根节点 rootU 和 rootV。如果 rootU rootV说明他们已经是朋友了直接返回 true。如果 rootU ! rootV我们需要预判假设合并这两个集合会不会触犯 restrictions遍历所有的限制条件 (x, y)。找到 x 和 y 的根节点 rootX 和 rootY。冲突检测如果合并 u 和 v 后导致 x 和 y 连通了那就是冲突。具体来说如果 (rootU rootX 且 rootV rootY) 或者 (rootU rootY 且 rootV rootX)说明合并后 x 和 y 就在同一个集合里了这是不允许的。如果没有冲突执行合并操作返回 true否则返回 false。关键细节在检查冲突时我们使用的是当前的并查集状态。只有在确定没有冲突后才真正执行 union 操作。 Java 代码实现class Solution {// 并查集父节点数组private int[] parent;public boolean[] friendRequests(int n, int[][] restrictions, int[][] requests) { // 1. 初始化并查集 parent new int[n]; for (int i 0; i n; i) { parent[i] i; // 每个人最初指向自己 } boolean[] result new boolean[requests.length]; // 2. 处理每一个好友请求 for (int i 0; i requests.length; i) { int u requests[i][0]; int v requests[i][1]; int rootU find(u); int rootV find(v); // 如果已经在同一个集合直接成功 if (rootU rootV) { result[i] true; continue; } // 3. 预判如果合并 rootU 和 rootV是否会违反 restrictions boolean canConnect true; for (int[] restriction : restrictions) { int x restriction[0]; int y restriction[1]; int rootX find(x); int rootY find(y); // 检查合并后是否会导致 x 和 y 连通 // 情况1: u所在的集合包含x, v所在的集合包含y // 情况2: u所在的集合包含y, v所在的集合包含x if ((rootU rootX rootV rootY) || (rootU rootY rootV rootX)) { canConnect false; break; } } // 4. 根据预判结果决定是否合并 if (canConnect) { union(u, v); // 合并集合 result[i] true; } else { result[i] false; } } return result; } // 查找根节点带路径压缩 private int find(int x) { if (parent[x] ! x) { parent[x] find(parent[x]); } return parent[x]; } // 合并两个集合 private void union(int x, int y) { int rootX find(x); int rootY find(y); if (rootX ! rootY) { parent[rootX] rootY; } }} 复杂度分析时间复杂度O(M times K times alpha(N))M 是 requests 的长度。K 是 restrictions 的长度。alpha(N) 是并查集查找操作的平均时间复杂度阿克曼函数的反函数非常小接近常数。对于每个请求我们最坏情况下需要遍历所有 restrictions 来检查冲突。空间复杂度O(N)主要用于存储并查集的 parent 数组。 示例 walkthrough以示例 1 为例n 3, restrictions [[0,1]], requests [[0,2],[2,1]]初始状态parent [0, 1, 2]处理请求 [0, 2]find(0) 0, find(2) 2。不同集合。检查限制 [0, 1]find(0) 0, find(1) 1。合并 0 和 2 后0 的集合含0和 2 的集合含2合并。检查冲突(00 21) 或 (01 20) 都不成立。无冲突执行 union(0, 2)。parent [0, 1, 0]。结果 true。处理请求 [2, 1]find(2) find(0) 0, find(1) 1。不同集合。检查限制 [0, 1]find(0) 0, find(1) 1。合并 2根0和 1根1后集合0和集合1会合并。检查冲突(00 11) 成立这意味着合并后 0 和 1 会连通。有冲突不执行合并。结果 false。最终结果[true, false]。

相关文章:

千问 LeetCode 2076.处理含限制条件的好友请求 public boolean[] friendRequests(int n, int[][] restrictions,

这是一道经典的并查集(Union-Find)应用题。 🧠 核心思路解析问题本质: 我们需要维护一组动态变化的“朋友圈”(连通分量)。每当有一个好友请求时,我们需要判断:如果同意这个请求&…...

OmniAgent:构建全能型AI智能体的统一框架与实战指南

1. 项目概述:一个面向未来的全能型智能体框架最近在AI智能体这个圈子里,一个名为“OmniAgent”的项目引起了我的注意。它不是一个具体的应用,而是一个框架,一个旨在构建“全能型”智能体的基础设施。简单来说,OmniAgen…...

学术文献综述的三维模型构建与AI辅助写作实践

1. 文献综述的学术价值与挑战 文献综述作为学术写作的核心组成部分,其质量直接影响研究成果的可信度与创新性。在当前的学术环境下,研究者普遍面临三大痛点:文献筛选效率低下、引用逻辑链条断裂、学术观点整合困难。根据Nature Index统计数据…...

LibreDWG完全指南:免费开源DWG文件处理的终极解决方案

LibreDWG完全指南:免费开源DWG文件处理的终极解决方案 【免费下载链接】libredwg Official mirror of libredwg. With CI hooks and nightly releases. PRs ok 项目地址: https://gitcode.com/gh_mirrors/li/libredwg LibreDWG是一个功能强大的开源CAD文件处…...

告别手动重建PMI!CATIA图形PMI导入 + Eyeshot集成,为.NET开发者解锁CAD数据新玩法

CATIA图形PMI与Eyeshot深度集成:.NET开发者的CAD数据革命 在工业软件领域,数据流转的完整性与开发效率始终是开发者面临的两大挑战。当CATIA文件中的PMI(产品制造信息)需要在第三方应用中重现时,传统方式往往意味着工…...

3步掌握MIFARE Classic Tool:解锁NFC标签的无限可能

3步掌握MIFARE Classic Tool:解锁NFC标签的无限可能 【免费下载链接】MifareClassicTool An Android NFC app for reading, writing, analyzing, etc. MIFARE Classic RFID tags. 项目地址: https://gitcode.com/gh_mirrors/mi/MifareClassicTool 还在为NFC标…...

金字塔稀疏注意力机制:高效视频理解与生成新范式

1. 金字塔稀疏注意力机制的技术背景视频数据理解与生成任务长期面临计算复杂度高、内存消耗大的挑战。传统密集注意力机制在处理视频序列时,需要计算每对时空位置之间的关联度,导致复杂度与帧数的平方成正比。以1080p视频为例,单帧包含超过20…...

如何快速掌握AMD Ryzen处理器调试:SMUDebugTool完整指南

如何快速掌握AMD Ryzen处理器调试:SMUDebugTool完整指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://…...

抖音无水印下载工具:3分钟获取纯净版高清视频的完整指南

抖音无水印下载工具:3分钟获取纯净版高清视频的完整指南 【免费下载链接】douyin_downloader 抖音短视频无水印下载 win编译版本下载:https://www.lanzous.com/i9za5od 项目地址: https://gitcode.com/gh_mirrors/dou/douyin_downloader 你是否曾…...

ductor:基于YAML的AI提示词工作流编排与自动化执行引擎详解

1. 项目概述:一个为AI提示词而生的“指挥家”如果你和我一样,深度使用过各种大语言模型,那你一定有过这样的体验:为了完成一个复杂的任务,比如写一份详细的市场分析报告,你需要反复和AI对话。先让它生成大纲…...

Claude桌面应用深度配置指南:打造个性化AI开发工作流

1. 项目概述:一个为Claude桌面应用量身定制的配置仓库如果你和我一样,是Claude桌面应用的深度用户,同时又对代码编辑、终端操作和日常开发流程有着近乎苛刻的效率追求,那么你很可能已经对应用默认的配置感到“意犹未尽”。Claude本…...

ShareX:集屏幕截图、文件共享与生产力工具于一体,多渠道获取信息!

ShareX:多功能实用工具集ShareX是一款具备屏幕截图、文件共享和生产力工具等多种功能的软件。它为用户提供了便捷的截图方式,无论是普通截图还是滚动截图都能轻松实现。在文件共享方面,它也有着不错的表现,方便用户在不同场景下分…...

Laravel AI智能体框架设计:从第三方库到官方SDK的架构演进

1. 项目概述:一个被官方取代的Laravel AI智能体框架如果你是一个Laravel开发者,最近想在自己的应用里集成AI能力,比如让AI帮你自动回复客户消息、分析数据或者执行一些自动化任务,那你可能已经听说过Laravel官方在12.x版本推出了自…...

终极Minecraft NBT编辑器:NBTExplorer完整指南与可视化数据编辑解决方案

终极Minecraft NBT编辑器:NBTExplorer完整指南与可视化数据编辑解决方案 【免费下载链接】NBTExplorer A graphical NBT editor for all Minecraft NBT data sources 项目地址: https://gitcode.com/gh_mirrors/nb/NBTExplorer 你是否曾因Minecraft世界文件损…...

Laravel AI智能体框架设计:从第三方包到官方SDK的迁移实践

1. 项目概述与核心价值如果你是一名Laravel开发者,最近正在琢磨怎么把AI能力,比如让ChatGPT或者Claude帮你发短信、查天气、做计算,优雅地集成到自己的应用里,那你可能已经踩过一些坑了。直接调用API写一堆胶水代码,处…...

从生产者-消费者模型到线程池:手把手用pthread实现你的第一个Linux C并发框架

从生产者-消费者模型到线程池:手把手用pthread实现你的第一个Linux C并发框架 在Linux系统编程中,多线程开发是提升程序性能的重要手段。但直接使用原生线程API往往面临资源管理复杂、性能不稳定等问题。本文将带你从经典的生产者-消费者模型出发&#x…...

OpenCode多账户AI配额监控:集中管理Gemini与Claude API使用状态

1. 项目概述:多账户AI配额监控工具在深度使用OpenCode这类AI开发环境时,我经常遇到一个痛点:手头管理着多个不同服务商(比如Google Gemini、Anthropic Claude)的API账户,每个账户都有各自的调用配额和速率限…...

DS4Windows终极指南:3步让PlayStation手柄在Windows上获得完美游戏体验

DS4Windows终极指南:3步让PlayStation手柄在Windows上获得完美游戏体验 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 想要在Windows电脑上使用PlayStation手柄畅玩所有PC游戏…...

CefFlashBrowser终极指南:在Windows上完美重温经典Flash游戏

CefFlashBrowser终极指南:在Windows上完美重温经典Flash游戏 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser CefFlashBrowser是一款专为Windows用户设计的Flash浏览器&#xf…...

MCP协议与mcp-use框架:构建AI交互式应用的全栈指南

1. 从零到一:理解 MCP 与 mcp-use 的全貌 如果你最近在折腾 AI 应用开发,尤其是想让 ChatGPT、Claude 这类大模型能调用外部工具、访问实时数据或者渲染个交互界面,那你大概率已经听过 MCP 这个名字了。Model Context Protocol&#xff0c…...

Nemotron Elastic框架:大语言模型弹性部署实战指南

1. Nemotron Elastic 框架概述在当今大语言模型(LLM)应用爆发的时代,开发者们面临着一个核心痛点:如何在资源有限的情况下高效部署和运行不同规模的模型?Nemotron Elastic 正是为解决这一问题而生的多合一推理框架。作…...

Windows上的iOS模拟器:ipasim完整入门指南

Windows上的iOS模拟器:ipasim完整入门指南 【免费下载链接】ipasim iOS emulator for Windows 项目地址: https://gitcode.com/gh_mirrors/ip/ipasim 你是否梦想过在Windows电脑上运行iOS应用?ipasim正是实现这一梦想的开源工具!这款创…...

仅剩最后3家未完成PLCopen认证的国产控制器厂商都在用的C语言适配框架——开源协议受限版v2.1.7内核解密(含SIL2功能安全证据包结构)

更多请点击: https://intelliparadigm.com 第一章:C语言PLCopen适配框架的演进脉络与行业定位 PLCopen 是国际公认的工业自动化编程标准组织,其规范定义了IEC 61131-3中结构化文本(ST)、梯形图(LD&#x…...

从“结构冲突”到“数据冲突”:一次搞懂CPU流水线里的那些“堵车”现场

从“结构冲突”到“数据冲突”:一次搞懂CPU流水线里的那些“堵车”现场 想象一下早高峰的多车道高速公路:收费站太少导致车辆积压(结构冲突),前车货物没卸完就被后车追尾(数据冲突)。CPU流水线中…...

80 行 PyTorch 从零写 DeepSeek 的 MLA:量一遍 KV cache、踩一遍 absorption,你才会明白 vLLM 为什么要加专用内核

80 行 PyTorch 从零写 DeepSeek 的 MLA:量一遍 KV cache、踩一遍 absorption,你才会明白 vLLM 为什么要加专用内核 我把 DeepSeek V2/V3 的 Multi-head Latent Attention(下称 MLA)按论文流程在单卡 RTX 3090 上用 80 行 PyTorch …...

量子随机数发生器输出冻结、BB84基矢匹配失败、偏振态漂移超标——C语言嵌入式终端调试三宗罪,一文根治

更多请点击: https://intelliparadigm.com 第一章:量子通信嵌入式终端调试的底层挑战 在资源受限的嵌入式平台上实现量子密钥分发(QKD)协议栈,需直面硬件抽象层(HAL)与量子物理层之间的语义鸿…...

【GPT-Image-2 实用玩法合集】不是“玩玩而已“,是真的能落地

【GPT-Image-2 实用玩法合集】不是"玩玩而已",是真的能落地 写在前面(2026.05.03 首发):2026 年 4 月,OpenAI 在 ChatGPT 全量上线了 GPT-Image-2——这个模型一出,整个 AI 图片生成圈都震了。为…...

如何高效解决C盘爆红问题:WindowsCleaner开源磁盘清理工具完全指南

如何高效解决C盘爆红问题:WindowsCleaner开源磁盘清理工具完全指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner Windows系统用户经常面临一个令人头…...

别再只用方块和球了!手把手教你为ROS2 Gazebo11导入和搭建高颜值模型库

别再只用方块和球了!手把手教你为ROS2 Gazebo11导入和搭建高颜值模型库 刚接触Gazebo的新手们,是否曾被那个空荡荡的仿真世界搞得一头雾水?除了几个基本的几何体,似乎找不到更有趣的元素来构建你的机器人王国。别担心,…...

Sunshine游戏串流:如何快速搭建个人云游戏平台的完整指南

Sunshine游戏串流:如何快速搭建个人云游戏平台的完整指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想要在任何设备上流畅玩PC游戏吗?Sunshine游戏串流…...