Leetcode 缺失的第一个正整数

news/2025/1/15 18:13:37/

在这里插入图片描述

题目意思是找出第一个没出现的最小正整数。

Explanation:

  1. Move Numbers to Correct Positions:

    • The idea is to place each number in its corresponding index. For example, 1 should be at index 0, 2 should be at index 1, and so on. This is done using a while loop to swap the elements until all valid numbers (those within the range 1 to n) are in their respective positions.
  2. Find the First Missing Positive:

    • After the first step, iterate through the array. The first position where the element is not equal to i + 1 is the smallest missing positive integer.
  3. Return n + 1 if all numbers are in correct places:

    • If all numbers are in their correct places, the smallest missing positive integer must be n + 1.

Time Complexity:

  • The time complexity is O ( n ) O(n) O(n) because each element is swapped at most once.

Space Complexity:

  • The space complexity is O ( 1 ) O(1) O(1) since we are using constant extra space.
class Solution {
public:int firstMissingPositive(vector<int>& nums) {int n = nums.size(); //由于数组下标是从0开始,所以值为 n 的元素的下标按顺序是 n - 1//例如1的下标是0,2的下标是1...for(int i = 0; i < n; i++) {//仅当当前元素值的范围介于[1,n]之间,并且它所该移动到的位置上的元素不相等时我们移动它到这个位置//值为 nums[i] 的元素按顺序排列的下标是 nums[i] - 1while(nums[i] > 0 && nums[i] <=n && nums[i] != nums[nums[i] - 1]) {swap(nums[i], nums[nums[i] - 1]);}}//然后,我们遍历数组,当下标 i 对应的值不等于 i + 1 时,返回 i + 1for(int i = 0; i < n; i++) {if(nums[i] != i + 1) {return i + 1;}}//如果在上面的循环中并没有return,说明数组所以元素值被排列成了 1,2,...,nreturn n + 1;}
};

http://www.ppmy.cn/news/1526383.html

相关文章

新手教学系列——用Nginx将页面请求分发到不同后端模块

在当今的Web开发中,前后端分离架构已经成为主流,尤其是大型应用项目。前端可以通过Vue这样的框架来统一管理页面和用户交互,而后端则通常会拆分成多个微服务模块,以便应对不同业务需求和功能扩展。在这样的架构下,Nginx作为一个高效、灵活的Web服务器,能够帮助我们将前端…

下载chromedriver驱动

首先进入关于ChromeDriver最新下载地址&#xff1a;Chrome for Testing availability 进入之后找到与自己所匹配的&#xff0c;在浏览器中查看版本号&#xff0c;下载版本号需要一致。 下载即可&#xff0c;解压&#xff0c;找到 直接放在pycharm下即可 因为在环境变量中早已配…

用Inno Setup打包QT程序输出安装包

InnoSetup打包编译好的QT程序 文章目录 InnoSetup打包编译好的QT程序介绍具体步骤自定义脚本更改引入配置文件/动态库路径申请管理员权限设置安装过程界面的图标和图片C程序依赖运行库 介绍 Inno Setup&#xff1a;用于打包安装程序 具体步骤 首先打开inno setup compiler 第…

Prometheus+grafana+kafka_exporter监控kafka运行情况

使用Prometheus、Grafana和kafka_exporter来监控Kafka的运行情况是一种常见且有效的方案。以下是详细的步骤和说明&#xff1a; 1. 部署kafka_exporter 步骤&#xff1a; 从GitHub下载kafka_exporter的最新版本&#xff1a;kafka_exporter项目地址&#xff08;注意&#xff…

C++11:lambda表达式和包装器(function bind)

目录 1. lambda表达式 1.1 引入原因 1.2 lambda表达式 1.3 捕获列表 mutable关键字 1.4 lambda表达式原理 2. 包装器 2.1 function 2.2 bind 1. lambda表达式 1.1 引入原因 C11之前&#xff0c;如果想要对一个数组排序&#xff0c;可以使用algorithm算法库中sort排序…

大模型教程:使用 Milvus、vLLM 和 Llama 3.1 搭建 RAG 应用

vLLM 是一个简单易用的 LLM 推理服务库。加州大学伯克利分校于 2024 年 7 月将 vLLM 作为孵化项目正式捐赠给 LF AI & Data Foundation 基金会。欢迎 vLLM 加入 LF AI & Data 大家庭&#xff01;&#x1f389; 在主流的 AI 应用架构中&#xff0c;大语言模型&#xff…

Spring6学习笔记4:事务

1 JdbcTemplate 1.1 简介 Spring 框架对 JDBC 进行封装&#xff0c;使用 JdbcTemplate 方便实现对数据库操作 准备工作 ①搭建子模块 搭建子模块&#xff1a;spring-jdbc-tx ②加入依赖 <dependencies><!--spring jdbc Spring 持久化层支持jar包--><dep…

微信小程序中巧妙使用 wx:if 和 catchtouchmove 实现弹窗禁止页面滑动功能

大家好&#xff0c;今天我要和大家分享的是在微信小程序开发过程中&#xff0c;如何利用 wx:if 或 wx:elif 来条件性地渲染不同的元素&#xff0c;并结合 catchtouchmove 事件处理函数来解决弹窗弹出时禁止背后页面滑动&#xff0c;而弹窗消失时恢复滑动的功能。 在微信小程序…