千问    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/8/22 21:28:59 阅读更多 →
视频批量去重工具用Python语言进行编写的视频批量去重工具

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

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

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

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

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

2026/8/21 12:47:41 阅读更多 →

最新新闻

UE C++定时器从蓝图到代码:核心机制与实战避坑指南

UE C++定时器从蓝图到代码:核心机制与实战避坑指南

如果你在虚幻引擎(UE)中已经习惯了用蓝图拖拽节点来实现一个简单的“延迟后执行”或“每隔X秒执行一次”的功能,那么当你第一次尝试在C中实现同样的定时器逻辑时,可能会感到一阵迷茫。蓝图里,一个“Delay”节点或“Set…

2026/8/24 3:05:00 阅读更多 →
Java程序员金九银十涨薪50%:AI时代技术突破与面试实战指南

Java程序员金九银十涨薪50%:AI时代技术突破与面试实战指南

这次我们来看一个对 Java 程序员特别重要的主题:在 AI 技术快速发展的背景下,如何通过系统化的技术准备实现职业突破,特别是在金九银十这样的关键跳槽季获得涨薪 50% 的机会。这个主题的核心不是空谈概念,而是提供一套可落地的技术…

2026/8/24 3:05:00 阅读更多 →
零代码构建AI学习伙伴:从概念到实践的全流程指南

零代码构建AI学习伙伴:从概念到实践的全流程指南

你是否曾想过,拥有一个24小时在线的专属学习伙伴?它能根据你的学习目标,自动规划路径、整理资料、答疑解惑,甚至在你分心时温柔提醒。这听起来像是科幻电影里的情节,但今天,借助AI Agent技术,我…

2026/8/24 3:05:00 阅读更多 →
Ansys Speos材料库:光学仿真效率提升与标准化管理实践

Ansys Speos材料库:光学仿真效率提升与标准化管理实践

1. 项目概述:为什么材料库是Speos仿真的效率引擎? 在光学仿真领域,尤其是使用Ansys Speos进行照明、背光、HUD或摄像头成像分析时,最耗时、最容易出错的环节往往不是几何建模,也不是网格划分,而是材料属性的…

2026/8/24 3:05:00 阅读更多 →
深入解析色彩空间:从sRGB、Linear RGB到XYZ的转换原理与应用

深入解析色彩空间:从sRGB、Linear RGB到XYZ的转换原理与应用

1. 色彩空间漫谈:从显示器到人眼感知搞图形、图像处理或者计算机视觉的朋友,肯定绕不开色彩空间这个概念。你辛辛苦苦调好的颜色,换个设备看就完全不是那个味儿了;你写的着色器,颜色混合结果总感觉不对劲,像…

2026/8/24 3:05:00 阅读更多 →
修改word文档最后修改者怎么改?本地安全修改最后保存者教程

修改word文档最后修改者怎么改?本地安全修改最后保存者教程

技术背景与需求分析 在 Windows 生态下,Office 文档(.docx / .xlsx / .pptx)之所以能承载“作者”、“最后保存者”等属性,核心在于其采用了 OPC (Open Packaging Conventions) 协议。 针对 修改word文档最后修改者怎么改 这一需…

2026/8/24 3:04:00 阅读更多 →

日新闻

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践 前端安全依赖分层防护。没有任何单一配置能替代输出编码、权限校验和依赖更新。 把不可信内容当作数据 默认使用框架的转义能力;确需渲染 HTML 时,先在服务端或可信的客户端库中进行白名单过滤。避免把用户输入直接赋给 inne…

2026/8/24 1:08:15 阅读更多 →
Windows登录密码存储机制全解析:从哈希算法到安全加固实战

Windows登录密码存储机制全解析:从哈希算法到安全加固实战

1. 项目概述:Windows登录密码的“黑匣子”每次你按下CtrlAltDel,输入密码,然后看到那个熟悉的桌面,这背后发生了一系列复杂而精密的操作。作为一名长期与Windows系统打交道的从业者,我经常被问到:“我的密码…

2026/8/24 1:08:15 阅读更多 →
AI面试系统安全挑战与解决方案

AI面试系统安全挑战与解决方案

1. 项目概述:AI面试系统的安全挑战去年参与某跨国企业AI面试系统部署时,遇到一个典型案例:候选人在视频面试中无意提到竞争对手产品名称,系统竟自动将该信息关联到企业知识库并生成竞品分析报告。这个看似"智能"的功能&…

2026/8/24 1:08:15 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 0:06:02 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 0:20:20 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/24 0:14:11 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/23 18:47:06 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →