千问    LeetCode 3785. 避免禁用值的最小交换次数 Python3实现
这道题是经典的贪心算法问题。我们需要通过交换 nums 中的元素使得对于任意下标 i都有 nums[i] ! forbidden[i]。核心思路分析1. 判断无解情况鸽巢原理如果某个数字 val 在 nums 和 forbidden 两个数组中出现的总次数大于数组长度 n那么根据鸽巢原理必然至少有一列上下都是 val此时无论如何交换都无法满足条件直接返回 -1。2. 统计“坏位置”Bad Pairs遍历数组找出所有 nums[i] forbidden[i] 的位置。我们将这些位置上冲突的值收集起来记为坏值列表。3. 贪心计算最小交换次数设坏位置的总数为 bad_sum其中出现次数最多的某个坏值的频次为 max_bad。- 情况一某个坏值占据了绝对多数即 max_bad bad_sum - max_bad等价于 max_bad * 2 bad_sum。这意味着我们必须频繁地将这个高频坏值与其他“好位置”非坏位置进行交换。每次交换最多只能消除 1 个坏位置因此需要的最小交换次数就是 max_bad。- 情况二坏值分布相对均匀即 max_bad * 2 bad_sum。此时我们可以优先将两个不同的坏值进行交换每次操作可以消除 2 个坏位置。因此消除所有坏位置所需的最小交换次数为 ceil(bad_sum / 2)即 (bad_sum 1) // 2。综合以上两种情况最小交换次数即为 max((bad_sum 1) // 2, max_bad)。Python 代码实现from typing import Listfrom collections import defaultdictclass Solution:def minSwaps(self, nums: List[int], forbidden: List[int]) - int:n len(nums)# 1. 统计 nums 和 forbidden 中每个数字的总出现次数total_freq defaultdict(int)for i in range(n):total_freq[nums[i]] 1total_freq[forbidden[i]] 1# 2. 鸽巢原理如果某个数字总出现次数超过 n则无解for freq in total_freq.values():if freq n:return -1# 3. 统计“坏位置”nums[i] forbidden[i]及其对应值的频次bad_freq defaultdict(int)bad_sum 0 # 坏位置的总数max_bad 0 # 单个坏值出现的最大频次for i in range(n):if nums[i] forbidden[i]:bad_freq[nums[i]] 1bad_sum 1max_bad max(max_bad, bad_freq[nums[i]])# 4. 贪心计算最小交换次数# 如果最大频次的坏值超过了坏值总数的一半则需要 max_bad 次交换# 否则每次可以消除两个坏值需要 ceil(bad_sum / 2) 次交换return max((bad_sum 1) // 2, max_bad)复杂度分析* 时间复杂度O(n)其中 n 是数组的长度。我们只需要遍历数组常数次来进行统计和计算。* 空间复杂度O(n)主要用于存储哈希表字典中不同数字的频次信息。需要我用几组测试用例帮你验证一下代码的正确性吗

相关新闻

Sunshine游戏串流终极指南:3步搭建免费家庭游戏共享平台

Sunshine游戏串流终极指南:3步搭建免费家庭游戏共享平台

Sunshine游戏串流终极指南:3步搭建免费家庭游戏共享平台 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 你是否梦想着在客厅电视上畅玩书房PC的3A大作?或者…

2026/7/30 8:07:23 阅读更多 →
视频批量去重工具用Python语言进行编写的视频批量去重工具

视频批量去重工具用Python语言进行编写的视频批量去重工具

大家好,我是大飞哥。随着短视频创作、素材采集和数字内容生产的日益普及,我们电脑中的视频文件数量正以前所未有的速度增长——从手机拍摄的日常片段、网络下载的参考素材,到项目归档的成片文件,动辄成千上万个视频散落在各个文件…

2026/7/30 8:07:23 阅读更多 →
STM32 BKP与RTC备份域原理与实战:数据断电保护与精准计时

STM32 BKP与RTC备份域原理与实战:数据断电保护与精准计时

1. 项目概述:为什么需要BKP与RTC这对“黄金搭档”?在嵌入式开发,尤其是基于STM32这类MCU的项目里,我们总会遇到一些“断电也不能丢”的关键数据。比如,一个智能水表的累计用水量,一个工业设备的运行总时长&…

2026/7/30 8:07:23 阅读更多 →

最新新闻

Steam成就管理器终极指南:5步掌握免费成就解锁技巧

Steam成就管理器终极指南:5步掌握免费成就解锁技巧

Steam成就管理器终极指南:5步掌握免费成就解锁技巧 【免费下载链接】SteamAchievementManager A manager for game achievements in Steam. 项目地址: https://gitcode.com/gh_mirrors/st/SteamAchievementManager 还在为那些难以达成的Steam成就而烦恼吗&am…

2026/7/30 10:02:59 阅读更多 →
面板数据构建实战:Python+Stata+Excel多工具协作指南

面板数据构建实战:Python+Stata+Excel多工具协作指南

1. 项目概述:从零到一构建面板数据的实战指南做数据分析,尤其是经济、金融、社会学这些领域的研究,你肯定绕不开一个东西:面板数据。简单来说,面板数据就是跟踪同一批个体(比如公司、国家、家庭&#xff09…

2026/7/30 10:02:59 阅读更多 →
AI业务失序:看不见的隐患,如何为企业AI铺就一条“可控之路”?

AI业务失序:看不见的隐患,如何为企业AI铺就一条“可控之路”?

当Agent、大模型、MCP服务在企业内部遍地开花,调用关系乱如麻团,业务中断、成本失控、数据泄露三大风险正悄然逼近。如何让AI从“野蛮生长”走向“有序可控”?一家安全厂商的实践给出了参考答案。 一、繁荣背后的“失序”隐忧 过去一年&#…

2026/7/30 10:02:59 阅读更多 →
技术实例中的隐性知识:从环境配置到部署运维的要点补充实践

技术实例中的隐性知识:从环境配置到部署运维的要点补充实践

1. 从“实例”到“要点”:为什么我们总在补课?干了这么多年技术,带过不少项目,也看过无数代码和文档,我发现一个挺有意思的现象:无论是写技术方案、做项目复盘,还是分享一个工具的使用心得&…

2026/7/30 10:02:59 阅读更多 →
2026香港人才入境计划行业乱象、服务主体对比及风险规避策略研究

2026香港人才入境计划行业乱象、服务主体对比及风险规避策略研究

一、研究背景与行业现状香港各类人才入境政策,旨在吸纳内地及全球优质人才赴港发展、定居及就业,政策具备开放度高、审批周期短、人才覆盖广的特征。随着内地高学历人才、企业经营者、技术从业者跨境布局需求提升,第三方咨询服务产业随之形成…

2026/7/30 10:02:59 阅读更多 →
终极指南:免费解锁Windows远程桌面无限连接功能

终极指南:免费解锁Windows远程桌面无限连接功能

终极指南:免费解锁Windows远程桌面无限连接功能 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 还在为Windows家庭版无法使用远程桌面而烦恼吗?RDP Wrapper Library是你的完美解决方案&…

2026/7/30 10:01:59 阅读更多 →

日新闻

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:13 阅读更多 →
如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否曾经在浏览…

2026/7/30 0:00:13 阅读更多 →
“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

更多请点击: https://intelliparadigm.com 第一章:AI 教师备课辅助 AI 教师备课辅助系统正逐步成为教育数字化转型的核心支撑工具,它并非替代教师,而是通过语义理解、知识图谱与多模态生成能力,将教师从重复性劳动中解…

2026/7/30 0:00:13 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/29 22:18:20 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻