即墨网站建设公司企业网站怎么做的

张小明 2025/12/30 8:19:47
即墨网站建设公司,企业网站怎么做的,广东短视频seo营销,wordpress建站教程网给你一个未排序的整数数组 nums #xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1#xff1a; 输入#xff1a;nums [1,2,0] 输出#xff1a;3 解释#xff1a;范围 [1,2] 中的数字都在数组…给你一个未排序的整数数组nums请你找出其中没有出现的最小的正整数。请你实现时间复杂度为O(n)并且只使用常数级别额外空间的解决方案。示例 1输入nums [1,2,0]输出3解释范围 [1,2] 中的数字都在数组中。示例 2输入nums [3,4,-1,1]输出2解释1 在数组中但 2 没有。示例 3输入nums [7,8,9,11,12]输出1解释最小的正数 1 没有出现。提示1 nums.length -231 nums[i] 解题思路要在 O (n) 时间复杂度和常数级额外空间内解决问题核心思路是原地哈希标记范围确定缺失的最小正整数一定在[1, n1]范围内n 为数组长度。例如数组长度为 3若 1、2、3 都存在则返回 4否则返回缺失的最小数。过滤无效值将数组中所有≤0 或 n 的数替换为n1这些数不可能是目标替换后不干扰后续标记。标记存在的数遍历数组对每个元素x取绝对值若x ≤ n则将数组第x-1位标记为负数表示x这个数存在。查找缺失值遍历数组第一个正数的位置i1就是缺失的最小正整数若全为负数说明 1~n 都存在返回n1。示例验证示例 1输入nums [1,2,0]过滤无效值0 替换为 4 →[1,2,4]标记存在的数x1 → nums[0] -1x2 → nums[1] -2x43→ 不处理数组变为[-1,-2,4]遍历找正数索引 2 是第一个正数返回213符合预期。示例 2输入nums [3,4,-1,1]过滤无效值-1 替换为 54 替换为 5 →[3,5,5,1]标记存在的数x3 → nums[2] -5x54→ 不处理x54→ 不处理x1 → nums [0] -3数组变为[-3,5,-5,1]遍历找正数索引 1 是第一个正数返回112符合预期。示例 3输入nums [7,8,9,11,12]过滤无效值所有数 5替换为 6 →[6,6,6,6,6]标记存在的数所有 x65→ 不处理数组仍为[6,6,6,6,6]遍历找正数索引 0 是第一个正数返回011符合预期。核心优势时间复杂度 O (n)仅三次线性遍历无嵌套操作空间复杂度 O (1)仅使用常数级临时变量原地修改数组鲁棒性处理了负数、重复值、超大数等边界场景适配题目 10⁵级别的数组长度。Python代码from typing import List class Solution: def firstMissingPositive(self, nums: List[int]) - int: n len(nums) # 过滤无效值 for i in range(n): if nums[i] 0 or nums[i] n: nums[i] n 1 # 标记存在的数 for i in range(n): x abs(nums[i]) if x n: nums[x - 1] -abs(nums[x - 1]) # 查找缺失值 for i in range(n): if nums[i] 0: return i 1 return n 1 # 测试用例 if __name__ __main__: solution Solution() # 示例1 nums1 [1,2,0] print(f示例1输入: {nums1}) print(f示例1输出: {solution.firstMissingPositive(nums1)}) # 示例2 nums2 [3,4,-1,1] print(f示例2输入: {nums2}) print(f示例2输出: {solution.firstMissingPositive(nums2)}) # 示例3 nums3 [7,8,9,11,12] print(f示例3输入: {nums3}) print(f示例3输出: {solution.firstMissingPositive(nums3)}) # 边界用例1~n都存在 nums4 [1,2,3,4] print(f示例4输入: {nums4}) print(f示例4输出: {solution.firstMissingPositive(nums4)}) # 边界用例空值/重复值 nums5 [2,2,2] print(f示例5输入: {nums5}) print(f示例5输出: {solution.firstMissingPositive(nums5)})LeetCode提交代码from typing import List class Solution: def firstMissingPositive(self, nums: List[int]) - int: n len(nums) # 步骤1过滤无效值≤0 或 n的数替换为n1不干扰后续标记 for i in range(n): if nums[i] 0 or nums[i] n: nums[i] n 1 # 步骤2标记存在的正整数用负数标记表示对应数存在 for i in range(n): x abs(nums[i]) # 取绝对值避免已标记的负数干扰 if x n: # 仅处理1~n范围内的数 nums[x - 1] -abs(nums[x - 1]) # 标记为负数重复标记不影响 # 步骤3查找第一个未标记的位置正数返回i1 for i in range(n): if nums[i] 0: return i 1 # 所有1~n都存在返回n1 return n 1程序运行结果如下示例1输入: [1, 2, 0] 示例1输出: 3 示例2输入: [3, 4, -1, 1] 示例2输出: 2 示例3输入: [7, 8, 9, 11, 12] 示例3输出: 1 示例4输入: [1, 2, 3, 4] 示例4输出: 5 示例5输入: [2, 2, 2] 示例5输出: 1总结本文提出了一种在O(n)时间复杂度和常数空间内寻找数组中缺失最小正整数的算法。核心思路是通过原地哈希标记首先过滤无效值≤0或n的数然后利用数组索引标记存在的正整数1~n最后扫描数组找到第一个未被标记的位置。该方法高效处理了各种边界情况负数、重复值、超大数等并通过三个线性遍历实现最优复杂度。Python实现验证了算法的正确性适用于LeetCode等编程挑战。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

wordpress 点评类网站电脑商城网站模板

前言 最近有很多小伙伴问我:零基础如何入门网络安全,他的梦想是成为网络安全工程师。我一问年龄:也就刚刚步入大一,这可是最好的时机,因为有足足四年的时光来做准备。 行业前景 网络安全行业的前景相信已经无须多言&a…

张小明 2025/12/27 11:08:49 网站建设

闵行网站建站多少钿东莞seo建站咨询

鸿蒙 Electron 跨端开发进阶实战:从桌面应用到鸿蒙多设备协同(附完整代码) 引言:跨端开发的破局之路 —— 鸿蒙与 Electron 的强强联合 在全场景智慧时代,用户对应用的需求早已不再局限于单一设备。鸿蒙 OS 以分布式…

张小明 2025/12/29 16:56:19 网站建设

网站建设备案需要什么北京企业建站模板

如何快速搭建本地AI推理平台:3种高效部署方案详解 【免费下载链接】LocalAI 项目地址: https://gitcode.com/gh_mirrors/loc/LocalAI 在人工智能技术快速发展的今天,越来越多的开发者和企业开始寻求将AI能力本地化部署的方案。LocalAI作为一个开…

张小明 2025/12/27 11:49:07 网站建设

上海到北京飞机几个小时外贸网站如何seo推广

一、目录 引言:国产操作系统学习背景与意义 KylinOS 安装部署全流程(避坑指南 实操验证) 核心功能与常用工具实战(高频命令 避错提示) 系统管理关键操作技巧(权限 / 用户 / 磁盘) 实战案例&am…

张小明 2025/12/27 12:24:37 网站建设

手机苗木网站源码建筑网站资料

Dify平台的主题定制与UI个性化设置指南 在企业加速拥抱AI的今天,一个智能客服系统如果还带着“通用模板”的影子——蓝灰配色、默认字体、毫无品牌辨识度的界面——用户的第一印象可能就已经打了折扣。更不用说,在多角色协作的复杂场景中,开发…

张小明 2025/12/27 13:19:42 网站建设

网站关键字怎么分割wordpress充值会员插件

Terraform自我托管终极指南:快速上手完全控制 【免费下载链接】awesome-tf Curated list of resources on HashiCorps Terraform and OpenTofu 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-tf Terraform自我托管平台让企业能够完全掌控基础设施即代…

张小明 2025/12/26 10:06:00 网站建设