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

leetcode41. 缺失的第一个正数,原地哈希表

leetcode41. 缺失的第一个正数

给你一个未排序的整数数组 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 没有出现。

在这里插入图片描述

目录

  • leetcode41. 缺失的第一个正数
  • 题目分析
  • 算法介绍
  • 算法步骤
  • 算法流程
  • 算法代码
  • 算法分析
  • 相似题目

题目分析

这是一个关于数组处理的问题。题目要求实现一个函数firstMissingPositive,该函数接受一个整数数组nums,并返回数组中第一个缺失的正整数。

算法介绍

为了解决这个问题,我们可以使用一种特殊的标记方法。首先,我们将所有小于等于0的元素替换为n+1,其中n是数组的长度。然后,我们遍历数组,将每个元素的正负号反转,如果它是一个正数。通过这种方式,我们可以标记数组中出现的所有正整数。最后,我们再次遍历数组,找到第一个未标记的正整数,即为答案。

算法步骤

  1. 遍历数组nums,将所有小于等于0的元素替换为n+1
  2. 再次遍历数组nums,反转每个元素的正负号,如果它是一个正数。
  3. 第三次遍历数组nums,找到第一个未标记的正整数,即为答案。

算法流程

开始
初始化 n
遍历 nums 替换小于等于0的元素为 n+1
遍历 nums 反转每个元素的正负号 如果它是一个正数
遍历 nums 找到第一个未标记的正整数
返回找到的正整数
结束

算法代码

class Solution {
public:int firstMissingPositive(vector<int>& nums) {int n = nums.size();for (int& num: nums) {if (num <= 0) {num = n + 1;}}for (int i = 0; i < n; ++i) {int num = abs(nums[i]);if (num <= n) {nums[num - 1] = -abs(nums[num - 1]);}}for (int i = 0; i < n; ++i) {if (nums[i] > 0) {return i + 1;}}return n + 1;}
};

算法分析

  • 时间复杂度:O(n),其中n是数组nums的长度。我们只需要遍历数组三次。
  • 空间复杂度:O(1),因为除了输入数组外,我们只使用了常数个额外空间。
  • 易错点
    • 确保正确地将所有小于等于0的元素替换为n+1
    • 在反转正负号时,确保只对正数进行操作。

相似题目

题目链接
缺失的第一个正数LeetCode 41
缺失的数字LeetCode 268

请注意,以上表格仅为示例,实际链接可能需要根据具体平台和题目编号进行调整。

相关文章:

leetcode41. 缺失的第一个正数,原地哈希表

leetcode41. 缺失的第一个正数 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,0] 输出&#xff1a;3 解释&#xf…...

如何准备教师资格证科目三“学科知识与教学能力”的考试与面试?(理科导向:数学/物理)

如何准备教师资格证科目三“学科知识与教学能力”的考试与面试&#xff1f;&#xff08;理科导向&#xff1a;数学/物理&#xff09; ​ 目录 收起 1 前言 1.1 自身经历 1.2 教师资格证的作用 2 知识点题型分数的分布与学习建议 2.1 科目三的知识点分数分布&#xff1a; …...

3.数据类型

作业系统链接 Python 是一门面向对象友好的语言&#xff0c;支持多种内置数据类型&#xff0c;包括整数&#xff08;int&#xff09;、浮点数&#xff08;float&#xff09;、布尔值&#xff08;bool&#xff09;、字符串&#xff08;str&#xff09;、列表&#xff08;list&am…...

Xcode报错:No exact matches in reference to static method ‘buildExpression‘

Xcode报错1&#xff1a;No exact matches in reference to static method buildExpression Xcode报错2&#xff1a;Type () cannot conform to View 这两个报错都是因为在SwiftUI的View的Body里面使用了ForEach循环,却没有在ForEach循环闭包的内部返回视图&#xff0c;而是做了…...

校园安全无小事,EasyCVR视频综合管理平台助力智慧校园视频监控系统全面升级

随着信息技术的飞速发展&#xff0c;智慧校园作为教育信息化的重要载体&#xff0c;正逐步成为提升校园安全管理、优化教育资源配置、增强师生互动体验的关键手段。其中&#xff0c;高效、智能的视频监控系统作为智慧校园不可或缺的一部分&#xff0c;扮演着至关重要的角色。TS…...

通过Python代码发送量化交易信号邮件通知

量化交易利用数学模型和计算机算法来分析市场数据,并生成交易信号,本文将介绍如何使用Python编写一个简单的脚本,通过发送邮件通知量化交易信号。 开启SMTP服务 首先要在发件箱的邮件设置中,将POP3/SMPT服务开启,记录下授权密码,在本地可通过此密码登录,注意有效期和保…...

计算机毕业设计 乡村生活垃圾管理系统的设计与实现 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…...

Qwen 2.5:阿里巴巴集团的新一代大型语言模型

Qwen 2.5&#xff1a;阿里巴巴集团的新一代大型语言模型 摘要&#xff1a; 在人工智能领域&#xff0c;大型语言模型&#xff08;LLMs&#xff09;的发展日新月异&#xff0c;它们在自然语言处理&#xff08;NLP&#xff09;和多模态任务中扮演着越来越重要的角色。阿里巴巴集…...

Element UI入门笔记(个人向)

Element UI入门笔记 将页面分割为一级菜单、二级菜单、导航栏三个部分&#xff1b;使用npm下载安装&#xff0c;使用语句npm i element-ui -s; 布局组件 el-form 用于创建和管理表单&#xff1b;从属性上看&#xff1a; :model&#xff1a;用于双向数据绑定&#xff0c;将表单…...

网络通信失败-关闭网络防火墙

0、报错描述1、分析2、解决办法 0、报错描述 在进行树莓派和PC端的网络通信的时候&#xff0c; 使用树莓派作为服务端&#xff0c;PC端作为客户端的时候&#xff0c;能成功通讯。 使用树莓派作为客户端&#xff0c;PC端作为服务端的时候&#xff0c;却发现通信失败。 体现在没…...

基于kolla-ansible在openEuler 22.03 SP4上部署OpenStack-2023.2

测试环境 openEuler-22.03-LTS-SP4-x86_64-dvd.iso Virtual Box&#xff0c;4 vCPU, 8G RAM, 50 vDisk。安装时删除/home&#xff0c;SWAP分区&#xff0c;全部空间给/目录。 目标是部署OpenStack All-In-One模式&#xff0c;控制节点计算节点存储节点在一台机器实现。 系统配…...

深拷贝|浅拷贝

目录 1. 深拷贝&#xff08;Deep Copy&#xff09; 2. 浅拷贝&#xff08;Shallow Copy&#xff09; 3. 深拷贝和浅拷贝的区别 4. 示例代码 浅拷贝示例 深拷贝示例 5.常用的方法 1.Java Object.clone() 方法 2.序列化与反序列化 6.Spring Boot 中的常用方法 使用 Se…...

图像处理-掩码

文章目录 一、简介二、主要用途三、代码实现四、掩码优缺点1.优点2.缺点 一、简介 在图像处理中&#xff0c;掩码&#xff08;Mask&#xff09;是一种特殊的图像&#xff0c;用于指定对原始图像进行操作的区域。掩码通常是二值图像&#xff08;即图像上的每个像素只有两个可能…...

[2025]基于微信小程序慢性呼吸系统疾病的健康管理(源码+文档+解答)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…...

react之jsx基础(1)概念和本质

文章目录 JSX 的基本概念1. **语法**2. **表达式**3. **属性**4. **子元素** JSX 的编译过程1. **转换成 JavaScript**2. **React 元素** JSX 的实际应用1. **组件定义**2. **组件嵌套** 总结 当然&#xff0c;以下是对 JSX 的详细讲解&#xff0c;包括其基本概念、语法、编译过…...

sqli-labs靶场自动化利用工具——第13关

文章目录 概要整体架构流程技术细节执行效果小结 概要 Sqli-Labs靶场对于网安专业的学生或正在学习网安的朋友来说并不陌生&#xff0c;或者说已经很熟悉。那有没有朋友想过自己开发一个测试脚本能实现自动化化测试sqli-labs呢&#xff1f;可能有些人会说不是有sqlmap&#…...

大舍传媒:尼日利亚传统新闻媒体宣传助力新兴行业蓬勃发展

大舍传媒&#xff1a;尼日利亚传统新闻媒体宣传助力新兴行业蓬勃发展 在全球化的浪潮下&#xff0c;媒体作为信息传播的重要渠道&#xff0c;对于促进行业发展和推动社会进步扮演着举足轻重的角色。特别是在非洲大陆上人口最多、经济最发达的国家——尼日利亚&#xff0c;传统…...

ISSTA 2024盛大开幕:中国学者的录取数和投稿量均位列第一

随着夏日的尾声&#xff0c;全球软件测试领域的专家和学者齐聚在奥地利维也纳。共同参与这场科技盛宴——ISSTA 2024。这场国际会议正如火如荼地进行中&#xff0c;吸引了来自世界各地的专业人士参与。 会议实况&#xff1a; 9月16日与17日&#xff0c;大会安排了丰富的社交活…...

HttpMediaTypeNotAcceptableException: No acceptable representation问题解决方法

Background org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation HttpMediaTypeNotAcceptableException: No acceptable representation 异常通常发生在Web应用程序中&#xff0c;客户端请求了一个资源&#xff0c;但是…...

Scrapy爬虫框架 Pipeline 数据传输管道

在网络数据采集领域&#xff0c;Scrapy 是一个非常强大的框架&#xff0c;而 Pipeline 是其中不可或缺的一部分。它允许我们在数据处理的最后阶段对抓取的数据进行进一步的处理&#xff0c;如清洗、存储等操作。 本教程将详细介绍如何在 Scrapy 中使用 Pipeline&#xff0c;帮…...

COMSOL仿真石墨烯吸收器,带视频演示,一步一步教学,原文章来自于一篇二区文章。 图片展示为...

COMSOL仿真石墨烯吸收器&#xff0c;带视频演示&#xff0c;一步一步教学&#xff0c;原文章来自于一篇二区文章。 图片展示为原文献结果&#xff0c;均可复现&#xff0c;视频里面包括设计步骤&#xff0c;可以用来学习操作仿真操作最近在研究石墨烯吸收器的仿真&#xff0c;发…...

OpenClaw极限测试:Phi-3-mini-128k-instruct连续运行7天稳定性报告

OpenClaw极限测试&#xff1a;Phi-3-mini-128k-instruct连续运行7天稳定性报告 1. 测试背景与动机 去年夏天&#xff0c;当我第一次在个人笔记本上部署OpenClaw时&#xff0c;最担心的不是功能实现&#xff0c;而是长期运行的稳定性。作为一个需要7*24小时工作的自动化助手&a…...

SecGPT-14B知识库增强:让OpenClaw安全决策更精准

SecGPT-14B知识库增强&#xff1a;让OpenClaw安全决策更精准 1. 为什么需要知识库增强的OpenClaw 去年我在尝试用OpenClaw自动化处理安全日志时&#xff0c;发现一个尴尬的问题&#xff1a;当模型遇到CVE漏洞编号时&#xff0c;经常给出模棱两可的判断。比如看到"CVE-20…...

前后端分离大创管理系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程

摘要 随着信息技术的快速发展&#xff0c;高校创新创业项目&#xff08;大创&#xff09;管理逐渐向数字化、智能化方向转型。传统的管理模式依赖纸质文档和人工操作&#xff0c;效率低下且容易出错&#xff0c;难以满足日益增长的项目申报、评审和进度跟踪需求。大创管理系统旨…...

[具身智能-236]:OpenCV ROI:Region of Interest(感兴趣区域)

在 OpenCV 中&#xff0c;ROI 是 Region of Interest&#xff08;感兴趣区域&#xff09;的缩写。简单来说&#xff0c;ROI 就是从图像中切出来的“一块”。在处理图像时&#xff0c;我们往往不需要处理整张图片&#xff08;比如处理人脸时不需要管背景里的树&#xff09;&…...

Win11Debloat:三分钟搞定Windows 11系统瘦身与隐私保护

Win11Debloat&#xff1a;三分钟搞定Windows 11系统瘦身与隐私保护 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and c…...

游戏开发中的“场”魔法:用梯度、散度模拟水流、烟雾与热量扩散

游戏开发中的“场”魔法&#xff1a;用梯度、散度模拟水流、烟雾与热量扩散 在《塞尔达传说&#xff1a;王国之泪》中&#xff0c;林克挥动魔法杖时涌动的岩浆、随风飘散的蒲公英&#xff0c;或是《艾尔登法环》里腐败湖面蒸腾的毒雾——这些令人屏息的动态效果背后&#xff0c…...

uniapp实战:uview Collapse组件动态数据加载后高度异常的3种解决方案

Uniapp实战&#xff1a;uView Collapse组件动态数据加载后高度异常的深度解决方案 在Uniapp开发中&#xff0c;uView UI库的Collapse折叠面板组件因其简洁易用而广受欢迎。但当我们需要动态加载数据并展开面板时&#xff0c;经常会遇到一个棘手的问题&#xff1a;面板高度计算不…...

Globe.gl性能优化秘籍:如何高效处理大规模卫星数据可视化

Globe.gl性能优化秘籍&#xff1a;如何高效处理大规模卫星数据可视化 【免费下载链接】globe.gl UI component for Globe Data Visualization using ThreeJS/WebGL 项目地址: https://gitcode.com/gh_mirrors/gl/globe.gl Globe.gl是一个基于ThreeJS/WebGL的3D地球数据可…...

高级特性:探索PyTorch/XLA的Pallas内核和Flash Attention实现

高级特性&#xff1a;探索PyTorch/XLA的Pallas内核和Flash Attention实现 【免费下载链接】xla Enabling PyTorch on XLA Devices (e.g. Google TPU) 项目地址: https://gitcode.com/gh_mirrors/xla/xla PyTorch/XLA是一个强大的开源项目&#xff0c;它使PyTorch能够在X…...