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

千问 LeetCode 2127.参加会议的最多员工数 public int maximumInvitations(int[] favorite)

这道题是图论中的经典问题考察的是基环树的处理。 题目分析1. 建模将员工看作图的节点favorite[i] 表示从节点 i 指向节点 favorite[i] 的一条有向边。2. 图的结构由于每个节点出度为 1这个图由若干个基环树组成。基环树是指一个环环上的每个节点可能挂着一棵树树枝指向环。3. 目标找到一个最大的节点集合使得集合中每个节点的 favorite 也在集合中。 关键观察这个问题有两种可能的最优解结构1. 大环如果存在一个长度大于 2 的环那么整个环上的节点都可以被选中。因为环上每个节点的 favorite 都在环上。2. 双向配对 链如果存在长度为 2 的环即 A 喜欢 BB 喜欢 A那么 A 和 B 可以互相选择。此外可以分别从 A 和 B 出发沿着反向边即喜欢 A 的人喜欢 B 的人延伸出最长的链。这种结构可以形成 链A - A B 2 的环记录最大环的长度。3. 处理长度 2 的环对于每个长度为 2 的环计算从两个节点出发能延伸出的最长链的长度然后将所有这种结构的长度相加。4. 返回最大值返回上述两种情况的最大值。 Java 代码实现import java.util.*;class Solution {public int maximumInvitations(int[] favorite) {int n favorite.length;// 构建反向图用于计算链的长度List reverseGraph new ArrayList();for (int i 0; i ());}for (int i 0; i queue new LinkedList();for (int i 0; i cycle new ArrayList();int cur i;while (!visited[cur]) {visited[cur] true;cycle.add(cur);cur favorite[cur];}int cycleSize cycle.size();if (cycleSize 2) {// 长度为 2 的环计算最长链int a cycle.get(0);int b cycle.get(1);// 从 a 出发不经过 b能走多远int lenA getLongestChain(a, b, reverseGraph);// 从 b 出发不经过 a能走多远int lenB getLongestChain(b, a, reverseGraph);sumOfPairs 2 lenA lenB;} else {// 长度大于 2 的环maxCycleSize Math.max(maxCycleSize, cycleSize);}}return Math.max(maxCycleSize, sumOfPairs);}// 计算从 start 出发不经过 avoid能走的最长链长度private int getLongestChain(int start, int avoid, List reverseGraph) {int maxLen 0;for (int next : reverseGraph.get(start)) {if (next ! avoid) {maxLen Math.max(maxLen, 1 getLongestChain(next, avoid, reverseGraph));}}return maxLen;}} 算法步骤详解1. 构建反向图reverseGraph[i] 存储所有喜欢员工 i 的员工列表。2. 拓扑排序通过 Kahn 算法找出所有不在环上的节点。入度为 0 的节点一定不在环上将其移除后可能会产生新的入度为 0 的节点继续这个过程。3. 识别环剩下的节点都在环上。遍历这些节点找出每个环。4. 分类处理* 如果环长度为 2计算从两个节点出发能延伸出的最长链累加到 sumOfPairs。* 如果环长度大于 2更新 maxCycleSize。5. 返回结果返回 max(maxCycleSize, sumOfPairs)。 复杂度分析* 时间复杂度O(n)。拓扑排序 O(n)找环 O(n)计算最长链 O(n)。* 空间复杂度O(n)。用于存储图、入度数组、访问标记等。

相关文章:

千问 LeetCode 2127.参加会议的最多员工数 public int maximumInvitations(int[] favorite)

这道题是图论中的经典问题,考察的是基环树的处理。🧠 题目分析1. 建模:将员工看作图的节点,favorite[i] 表示从节点 i 指向节点 favorite[i] 的一条有向边。 2. 图的结构:由于每个节点出度为 1,这个图由若…...

Python初学者项目练习9--对简单列表元素排序

一、练习题目 给定一个简单列表,对其元素进行排序简单列表:元素类型不是复合类型(列表/元组/字典) 示例: 形式1:[10,20,30,40] 形式2:[‘aa’, ‘bb’, ‘cc’…...

【赵渝强老师】Hadoop的伪分布部署模式

Hadoop的安装和部署是大数据生态圈体系中最麻烦的一个。Hadoop部署完成后,进一步地部署Spark和Flink就非常容易了。Hadoop的部署模式分为本地模式、伪分布模式和全分布模式。在学习完成了ZooKeeper的相关内容后,还将进一步地学习Hadoop HA的部署。这里重…...

千问 LeetCode 2122.还原原数组 public int[] recoverArray(int[] nums)

这道题的核心思路是枚举 双指针验证。🧠 解题思路1. 排序:首先将 nums 数组排序。排序后,最小的元素 nums[0] 必然是原数组某个元素减去 k 得到的(即 lower 数组中的最小值)。 2. 枚举 k:我们遍历排序后…...

Ising机与Bounce-Bind机制在组合优化中的应用

1. Ising机与组合优化问题概述在计算复杂性理论中,组合优化问题(Combinatorial Optimization Problems, COPs)因其NP难特性而闻名。这类问题在物流调度、芯片设计、金融投资组合等领域广泛存在。传统计算机采用冯诺依曼架构,其串行…...

硬件设计避坑:PMOS缓启动电路关断慢?实测教你优化栅极泄放回路(含仿真文件)

PMOS缓启动电路优化实战:栅极泄放回路设计与关断性能提升 引言 在电源管理系统中,PMOS管因其低导通电阻和简单驱动特性,常被用作电源开关。但当负载端存在较大容性负载时,直接开关可能导致瞬间大电流冲击,因此缓启动电…...

专业干货:AI教材写作全攻略,低查重技巧与优质工具大揭秘!

编写教材的过程,总是避免不了那些“慢节奏”的烦恼。尽管已经整理好框架和资料,却总是被内容创作所困扰——一段话反复推敲了半个小时,仍觉得表达不够理想;章节之间的连接语,绞尽脑汁也想不出合适的措辞,写…...

用立创EDA复刻蓝桥杯省赛真题电路:手把手搭建一个简易电压采集与显示系统(2022模拟题2)

用立创EDA复刻蓝桥杯省赛真题电路:手把手搭建一个简易电压采集与显示系统 在电子设计竞赛的备赛过程中,真题复现是最有效的实战训练方式之一。2022年蓝桥杯省赛模拟题中的电压采集与显示系统,融合了模拟信号处理、数字显示和存储等典型电路模…...

Java调用海康SDK的NET_DVR_STDXMLConfig接口,手把手教你获取设备信息(附完整代码)

Java调用海康SDK的NET_DVR_STDXMLConfig接口实战指南 对于需要与海康威视设备深度集成的Java开发者来说,NET_DVR_STDXMLConfig接口是一个强大但容易踩坑的工具。本文将带你从零开始,理解这个接口的工作原理,并提供一个完整的、可直接运行的代…...

【Redis】Redis——过期键删除策略、内存淘汰8种策略、LRU/LFU实现

文章目录Redis——过期键删除、内存淘汰、LRU/LFU实现一、核心概念前置区分(90%使用者的混淆点)二、Redis 过期键删除策略2.1 过期键的底层存储2.2 行业通用的3种过期删除策略2.3 Redis 实际采用的组合策略(惰性删除 定期删除)2.…...

别再死记硬背async/await了!用Playwright+Python写自动化脚本,这3个坑我帮你踩过了

别再死记硬背async/await了!用PlaywrightPython写自动化脚本,这3个坑我帮你踩过了 第一次用Playwright写自动化测试脚本时,我对着文档里的async/await关键字发呆了半小时。明明照着示例代码敲了一遍,运行时却总是报错。后来才发现…...

RTX 3050 + Win11实测:Python 3.10环境下,用pip搞定TensorFlow-GPU 2.10.1的完整避坑指南

RTX 3050 Win11实战:Python 3.10环境下的TensorFlow-GPU 2.10.1终极配置手册 在Windows 11系统上配置TensorFlow-GPU环境,尤其是搭配NVIDIA RTX 3050这样的主流显卡时,往往会遇到各种版本冲突和环境配置问题。本文将带你一步步完成从零开始…...

从0到1掌握反反爬:IP封禁与UA检测的底层原理及工业级突破方案

在爬虫开发领域,反爬与反反爬的对抗是永恒的主题。几乎所有有价值的网站都会部署基础的反爬机制,而IP封禁和User-Agent(UA)检测则是其中最基础、应用最广泛的两道防线。很多初学者的爬虫程序刚跑几分钟就被封禁,往往就是栽在了这两个看似简单…...

Banana Pi BPI-Leaf-S3开发板硬件解析与AI应用开发

1. Banana Pi BPI-Leaf-S3开发板深度解析作为一款售价仅7.5美元的ESP32-S3开发板,Banana Pi BPI-Leaf-S3在硬件配置上做了不少实用取舍。我们先来看看它的核心规格:1.1 硬件架构剖析处理器核心:采用乐鑫ESP32-S3双核LX7处理器,主频…...

SpringBoot + Thymeleaf 实战:手把手教你从零搭建一个婚纱租赁网站(附完整源码)

SpringBoot Thymeleaf 实战:从零构建婚纱租赁平台全流程指南 每次看到婚礼现场新娘穿着漂亮的婚纱,我都会想:这些婚纱最终都去了哪里?事实上,婚纱租赁市场正在以每年15%的速度增长。作为开发者,我们完全可…...

GRADFILTERING:基于梯度信噪比的指令调优数据筛选方法

1. 项目背景与核心价值在指令调优(Instruction Tuning)领域,数据质量对模型性能的影响往往比数据量更重要。传统的数据选择方法通常依赖于人工规则或简单的启发式指标,难以有效识别数据中的噪声和低质量样本。GRADFILTERING提出了…...

解决ZYNQ裸机网络扩展难题:为LWIP库添加自定义PHY驱动与SDK配置界面

ZYNQ裸机网络扩展实战:LWIP库深度定制与SDK无缝集成指南 在嵌入式系统开发中,ZYNQ平台的独特架构为设计者提供了前所未有的灵活性。当项目需要突破PS端单网口的限制,通过PL扩展实现双网口通信时,开发者往往面临官方BSP库不支持自定…...

别再为调试器发愁了!手把手教你用OpenOCD搞定J-Link、ST-Link和FTDI

嵌入式调试实战:OpenOCD与三大调试器深度对比指南 调试器选型一直是嵌入式开发者面临的第一个技术决策点。面对市面上琳琅满目的调试工具链,新手工程师常陷入选择困境:价格不菲的J-Link是否物有所值?ST-Link在非ST芯片上表现如何&…...

深度学习与地图增强代理技术在图像地理定位中的应用

1. 项目背景与核心价值计算机视觉领域有个经典难题:给一张普通照片,如何准确判断它的拍摄位置?这个问题在刑侦取证、旅游导航、社交媒体分析等领域都有重要应用。传统方法主要依赖GPS元数据,但现实中大量图片的元数据要么缺失要么…...

编码能力超越ClaudeCode,最新国内用户一键接入Codex小白快速入门教程

编码能力超越ClaudeCode,最新国内用户一键接入Codex小白快速入门教程 写在前面 Codex 现在已经不只是一个聊天式代码助手了,它更像一套能持续接任务的 AI 编程工作流。你给它目标,它拆任务、改文件、跑命令,再把结果带回来。 很…...

免费实时提升动漫画质:Anime4K超分辨率技术完整指南

免费实时提升动漫画质:Anime4K超分辨率技术完整指南 【免费下载链接】Anime4K A High-Quality Real Time Upscaler for Anime Video 项目地址: https://gitcode.com/gh_mirrors/an/Anime4K 你是否曾在4K显示器上观看珍藏的360p老番剧,却被满屏的马…...

MQTTX与AI助手实时交互:基于MCP与SSE的物联网协议桥接实践

1. 项目概述:一个连接MQTTX与AI世界的桥梁最近在折腾智能家居和自动化流程,发现一个挺有意思的痛点:我们手头有MQTTX这样强大的客户端来管理和测试MQTT消息,也有像Claude、Cursor这类越来越聪明的AI助手能帮我们写代码、分析数据。…...

构建本地化音视频转录分析平台:Whisper+Ollama+Meilisearch实战

1. 项目概述:一个全能的本地化音视频转录与智能分析平台如果你经常需要处理会议录音、访谈、播客或者视频内容,并且厌倦了手动整理、标记说话人和提炼重点的繁琐工作,那么今天聊的这个项目,绝对能让你眼前一亮。Transcription Str…...

ChatGPT文档格式化指令:打造Google Docs无缝协作的AI写作规范

1. 项目概述:一份为ChatGPT定制的Google Docs格式指令如果你和我一样,经常需要让ChatGPT、Claude这类AI助手帮你起草文档,然后直接粘贴到Google Docs里进行后续编辑,那你一定遇到过这个令人头疼的问题:格式全乱了。AI生…...

从试错到科学:系统化调试方法论与工程实践指南

1. 项目概述与核心价值最近在GitHub上看到一个名为aptratcn/systematic-debugging的项目,作为一名常年与各种“玄学”Bug搏斗的开发者,这个标题瞬间就抓住了我的眼球。在软件开发的世界里,调试(Debugging)往往被视为一…...

DANDI CLI工具:神经科学数据管理的标准化与自动化实践

1. 项目概述:一个现代、高效的CLI工具最近在折腾一些数据管理和自动化任务时,发现了一个挺有意思的项目:emarco177/dandi。这其实是一个基于Python的命令行界面工具,它主要服务于一个名为DANDI(分布式档案的神经数据基…...

Misskey AI助手部署指南:OpenClaw智能体与联邦宇宙社交网络集成

1. 项目概述:为Misskey注入AI灵魂如果你正在运营一个Misskey实例,或者你是一个活跃的联邦宇宙(Fediverse)用户,可能会想过:要是我的Misskey实例能有一个智能助手就好了。它不仅能自动回复用户的私信和提及&…...

Copaw多智能体团队协作:从架构设计到实战部署全解析

1. 项目概述:Copaw Agent Team Skills 深度解析如果你正在探索如何将多个AI智能体(Agent)高效地组织起来,协同完成一个复杂的项目,比如开发一个网站、策划一场营销活动,或者进行一项技术研究,那…...

从监控到洞察:构建实时数据关联分析与根因定位系统

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目,叫“Lokis Insight”。这个名字一听就很有北欧神话的味道,Loki是诡计与智慧之神,而“Insight”则是洞察力。所以,这个项目本质上是一个旨在提供深度洞察、分析和可视化能力…...

避坑指南:SAP固定资产配置里,记账码70和31千万别乱选!附SPRO完整路径

SAP固定资产配置陷阱:记账码70与31的深度解析与实战避坑指南 在SAP系统中,固定资产模块的配置看似简单,实则暗藏玄机。许多资深顾问都曾在这个领域栽过跟头,尤其是那些涉及记账码选择的场景。今天我们就来深入探讨一个看似基础却极…...