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

【LeetCode每日一题】——41.缺失的第一个正数

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例】
  • 六【题目提示】
  • 七【解题思路】
  • 八【时间频度】
  • 九【代码实现】
  • 十【提交结果】

一【题目类别】

  • 哈希表

二【题目难度】

  • 困难

三【题目编号】

  • 41.缺失的第一个正数

四【题目描述】

  • 给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。
  • 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。

五【题目示例】

  • 示例 1:

    • 输入:nums = [1,2,0]
    • 输出:3
  • 示例 2:

    • 输入:nums = [3,4,-1,1]
    • 输出:2
  • 示例 3:

    • 输入:nums = [7,8,9,11,12]
    • 输出:1

六【题目提示】

  • 1 < = n u m s . l e n g t h < = 5 ∗ 1 0 5 1 <= nums.length <= 5 * 10^5 1<=nums.length<=5105
  • − 2 31 < = n u m s [ i ] < = 2 31 − 1 -2^{31} <= nums[i] <= 2^{31} - 1 231<=nums[i]<=2311

七【解题思路】

  • 对数组中的元素进行“原地哈希”,第i个元素映射到i-1的位置
  • 这样,对于1-N中的元素,如果没有空缺,那么缺失的第一个正数一定是N+1;如果有空缺,那么缺失的第一个整数一定在1-N中
  • 然后我们遍历数组,对于映射不匹配的元素直接返回即可

八【时间频度】

  • 时间复杂度: O ( n ) O(n) O(n) n n n为传入的数组的长度
  • 空间复杂度: O ( 1 ) O(1) O(1)

九【代码实现】

  1. Java语言版
class Solution {public int firstMissingPositive(int[] nums) {int n = nums.length;for(int i = 0;i < n;i++){while(0 < nums[i] && nums[i] <= n && nums[nums[i] - 1] != nums[i]){swap(nums, nums[i] - 1, i);}}for(int i = 0;i < n;i++){if(nums[i] != i + 1){return i + 1;}}return n + 1;}public void swap(int[] nums, int index1, int index2){int temp = nums[index1];nums[index1] = nums[index2];nums[index2] = temp;}
}
  1. C语言版
void swap(int* nums, int index1, int index2)
{int temp = nums[index1];nums[index1] = nums[index2];nums[index2] = temp;
}int firstMissingPositive(int* nums, int numsSize)
{int n = numsSize;for(int i = 0;i < n;i++){while(0 < nums[i] && nums[i] <= n && nums[nums[i] - 1] != nums[i]){swap(nums, nums[i] - 1, i);}}for(int i = 0;i < n;i++){if(i + 1 != nums[i]){return i + 1;}}return n + 1;
}
  1. Python语言版
class Solution:def firstMissingPositive(self, nums: List[int]) -> int:n = len(nums)for i in range(0, n):while 1 <= nums[i] and nums[i] <= n and nums[nums[i] - 1] != nums[i]:self.swap(nums, nums[i] - 1, i)for i in range(0, n):if nums[i] != i + 1:return i + 1return n + 1def swap(self, nums, index1, index2):temp = nums[index1]nums[index1] = nums[index2]nums[index2] = temp
  1. C++语言版
class Solution {
public:int firstMissingPositive(vector<int>& nums) {int n = nums.size();for(int i = 0;i < n;i++){while(0 < nums[i] && nums[i] <= n && nums[nums[i] - 1] != nums[i]){swap(nums, nums[i] - 1, i);}}for(int i = 0;i < n;i++){if(nums[i] != i + 1){return i + 1;}}return n + 1;}void swap(vector<int>& nums, int index1, int index2){int temp = nums[index1];nums[index1] = nums[index2];nums[index2] = temp;}
};

十【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. C语言版
    在这里插入图片描述

  3. Python语言版
    在这里插入图片描述

  4. C++语言版
    在这里插入图片描述

相关文章:

【LeetCode每日一题】——41.缺失的第一个正数

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 哈希表 二【题目难度】 困难 三【题目编号】 41.缺失的第一个正数 四【题目描述】 给你一个…...

typedef函数代码段解释以及部分Windows下的系统函数

文章目录 1、typedef int (WINAPI* LPSDOLInitialize)(const SDOLAppInfo* pAppInfo)2、typedef int (WINAPI* LPSDOLGetModule)(REFIID riid, void** intf)3、typedef int (WINAPI* LPSDOLTerminal)();4、GetProcAddress运行时获取一个动态链接库&#xff08;DLL&#xff09;中…...

Typora常用手册

常用快捷键 加粗&#xff1a; Ctrl B 标题&#xff1a; Ctrl H 插入链接&#xff1a; Ctrl K 插入代码&#xff1a; Ctrl Shift C – 无法执行 行内代码&#xff1a; Ctrl Shift K 插入图片&#xff1a; Ctrl Shift I 无序列表&#xff1a;Ctrl Shift L – 无法执行…...

互联网发展历程:从网线不够长到中继器的引入

互联网&#xff0c;这个如今贯穿我们生活的无所不在的网络&#xff0c;其发展历程充满了无数的创新和变革。有一项看似不太起眼的技术却在互联网的发展中发挥着至关重要的作用&#xff0c;那就是中继器。本文将带您深入了解互联网的发展历程&#xff0c;探讨在网线不够长的情况…...

【Java】异常处理 之 使用SLF4J 和 Logback

使用SLF4J和Logback 前面介绍了Commons Logging 和Log4j 这一对好基友&#xff0c;它们一个负责充当日志 API&#xff0c;一个负责实现日志底层&#xff0c;搭配使用非常便于开发。 有的童鞋可能还听说过SLF4J和Logback。这两个东东看上去也像日志&#xff0c;它们又是啥&…...

C++11并发与多线程笔记 (1)

C11并发与多线程笔记&#xff08;1&#xff09; 1、并发、进程、线程的基本概念和综述1.1 并发1.2 可执行程序1.3 进程1.4 线程1.5 学习心得 2、并发的实现方法2.1 多进程并发2.2 多线程并发 3、C11新标准线程库 1、并发、进程、线程的基本概念和综述 1.1 并发 指在一个时间段…...

07_Hudi案例实战、Flink CDC 实时数据采集、Presto、FineBI 报表可视化等

7.第七章 Hudi案例实战 7.1 案例架构 7.2 业务数据 7.2.1 客户信息表 7.2.2 客户意向表 7.2.3 客户线索表 7.2.4 线索申诉表 7.2.5 客户访问咨询记录表 7.3 Flink CDC 实时数据采集 7.3.1 开启MySQL binlog 7.3.2 环境准备 7.3.3 实时采集数据 7.3.3.1 客户信息表 7.3.3.2 客户…...

ceph相关概念和部署

Ceph 可用于向云提供 Ceph 对象存储 平台和 Ceph 可用于提供 Ceph 块设备服务 到云平台。Ceph 可用于部署 Ceph 文件 系统。所有 Ceph 存储集群部署都从设置 每个 Ceph 节点&#xff0c;然后设置网络。 Ceph 存储集群需要满足以下条件&#xff1a;至少一个 Ceph 监控器&#x…...

Android Jetpack Compose 中的分页与缓存展示

Android Jetpack Compose 中的分页与缓存展示 在几乎任何类型的移动项目中&#xff0c;移动开发人员在某个时候都会处理分页数据。如果数据列表太大&#xff0c;无法一次从服务器检索完毕&#xff0c;这就是必需的。因此&#xff0c;我们的后端同事为我们提供了一个端点&#…...

无名管道 / 有名管道(FIFO)

根据上节所讲就可以了解到&#xff1a;管道其实就是实现进程间通讯IPC中的一种类型方法 基本概念&#xff08;无名管道&#xff09; 管道是一种最基本的IPC机制&#xff0c;通常指无名管道&#xff0c;也是UNIX系统IPC最古老的形式。管道只能作用于有血缘关系的进程之间&…...

Three.js纹理贴图

目录 Three.js入门 Three.js光源 Three.js阴影 Three.js纹理贴图 纹理是一种图像或图像数据&#xff0c;用于为物体的材质提供颜色、纹理、法线、位移等信息&#xff0c;从而实现更加逼真的渲染结果。 纹理可以应用于Three.js中的材质类型&#xff0c;如MeshBasicMaterial…...

1+X Web前端开发职业技能等级证书建设方案

一 、系统概述 1X Web前端开发技术是计算机类专业重要的核心课程&#xff0c;课程所包含的教学内容多&#xff0c;实践性强&#xff0c;并且相关技术更新快。传统的课堂讲授模式以教师为中心&#xff0c;学生被动式接收&#xff0c;难以调动学生学习的积极性和主动性。混合式教…...

Rx.NET in Action 第二章学习笔记

2 Hello, Rx 本章节涵盖的内容: 不使用Rx的工作方式向项目中添加Rx创建你的第一个Rx应用程序 Rx 的目标是协调和统筹来自社交网络、传感器、用户界面事件等不同来源的基于事件的异步计算。例如&#xff0c;建筑物周围的监控摄像头和移动传感器会在有人靠近建筑物时触发&#xf…...

【软件工程 | 模块耦合】什么是模块耦合及分类

概念 耦合(coupling)是对两个模块之间联接程度的一种度量。模块间的依赖程度越大&#xff0c;则其耦合程度也就越大&#xff1b; 反之&#xff0c;模块间的依赖程度越小&#xff0c;则其耦合程度也就越小。 很显然&#xff0c;为了使软件具有较好的可维护性和可修改性&#xf…...

OCT介绍和分类

前言&#xff1a;研究方向和OCT有关&#xff0c;为了方便以后回顾&#xff0c;所以整理了OCT相关的一些内容。 OCT介绍和分类 OCT介绍分类时域OCT频域OCT扫频OCT谱域OCT OCT介绍 名称&#xff1a;OCT、光学相干层析成像术、Optical Coherence Tomography。 概念&#xff1a;O…...

07-2_Qt 5.9 C++开发指南_二进制文件读写(stm和dat格式)

文章目录 1. 实例功能概述2. Qt预定义编码文件的读写2.1 保存为stm文件2.2 stm文件格式2.3 读取stm文件 3. 标准编码文件的读写3.1 保存为dat文件3.2 dat文件格式3.3 读取dat文件 4. 框架及源码4.1 可视化UI设计4.2 mainwindow.cpp 1. 实例功能概述 除了文本文件之外&#xff…...

SpringBoot复习:(41)配置文件中配置的server开头的属性是怎么配置到Servlet容器中起作用的?

ServletWebServerFactoryAutoConfiguration类&#xff1a; 可以看到其中使用了EnableConfigurationProperties导入了ServerProperties 而ServerProperties通过使用ConfigurationProperties注解导入了配置文件中已server开头的那些配置项。 可以看到ServletWebServerFactory定…...

深入解读网络协议:原理与重要概念

目录 TCP/IP协议 IP地址 子网掩码 DNS 网关 网络端口 TCP/IP协议 TCP/IP是互联网通信的基础协议。它由两个部分组成&#xff1a;TCP负责数据的可靠传输&#xff0c;确保数据按序到达目标&#xff1b;IP负责寻址和路由&#xff0c;确保数据在网络中正确传递。TCP/IP协议簇…...

O型圈不同类型的应用指南

O型圈因其优异的密封性能而广泛应用于各个行业和应用。它们简单、经济高效且密封可靠&#xff0c;下面我们了解一下适合每种应用的特定类型的O型圈。 1、汽车行业 在汽车行业中&#xff0c;O型圈在密封发动机部件和防止机油或冷却剂泄漏方面发挥着至关重要的作用。常见应用包…...

Mysql 搭建MHA高可用架构,实现自动failover,完成主从切换

目录 自动failover MHA&#xff1a; MHA 服务 项目&#xff1a;搭建Mysql主从复制、MHA高可用架构 实验项目IP地址配置&#xff1a; MHA下载地址 项目步骤&#xff1a; 一、修改主机名 二、编写一键安装mha node脚本和一键安装mha mangaer脚本&#xff0c;并执行安装…...

cgm-remote-monitor开发者API:构建第三方血糖应用的技术细节

cgm-remote-monitor开发者API&#xff1a;构建第三方血糖应用的技术细节 【免费下载链接】cgm-remote-monitor nightscout web monitor 项目地址: https://gitcode.com/gh_mirrors/cg/cgm-remote-monitor 想要为糖尿病患者开发创新的血糖监控应用&#xff1f;cgm-remote…...

从零开始:Snap 官方指南与实战技巧

1. 认识Snap&#xff1a;新一代Linux软件包管理工具 第一次接触Snap是在2016年&#xff0c;当时我正在为团队寻找跨Linux发行版的软件部署方案。传统deb/rpm包在不同系统上的依赖问题让人头疼&#xff0c;直到发现Snap这个"自带运行环境"的解决方案。简单来说&#x…...

04.Python 循环:while+for详解

1. 循环 while或 for后边都记得加:&#xff08;英文冒号&#xff09; 1.1 while 1.1.1 概述 ① 初始化计数器 ② 编写循环条件&#xff08;判断计数器是否达到了目标位置&#xff09; ③ 在循环内部更新计数器 1.1.2 猜数字案例 #适用于 循环次数未知的情况, 例如: 猜数字游戏.…...

MCP4922双通道DAC嵌入式驱动框架解析

1. DSProcessingIO项目深度解析&#xff1a;面向嵌入式信号链的双通道DAC驱动框架1.1 项目定位与工程背景DSProcessingIO并非一个通用型外设驱动库&#xff0c;而是针对特定硬件信号链架构设计的专用I/O处理框架。其命名中的“DS”指向Digital Signal Processing&#xff08;数…...

leetcode 101.对称二叉树(不会做)

遇到递归就抓瞎 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def isSymmetric(self, root: Optional[Tre…...

0欧姆电阻在电子设计中的关键应用与选型指南

1. 0欧姆电阻的实质与特性在电子工程实践中&#xff0c;0欧姆电阻&#xff08;Zero-Ohm Resistor&#xff09;是一种表面贴装或插装形式的特殊电子元件。虽然标称值为零欧姆&#xff0c;但实际测量时会发现其存在微小的阻值——典型值在20-50毫欧之间。这个特性使其既不同于理想…...

三步生成炫酷3D魔鬼面具:用快马AI快速构建交互式视觉原型

今天想和大家分享一个超实用的技巧——如何用InsCode(快马)平台快速生成3D魔鬼面具的交互式原型。作为一个经常需要做创意展示的设计师&#xff0c;这个工具真的帮我省去了大量开发时间。 从创意到原型的极速转换 以前做3D展示需要先建模再写代码&#xff0c;现在只需要在快马平…...

HWD风速风向传感器Arduino驱动库详解

1. 项目概述 WindSensorHWD_asukiaaa 是一款专为 HWD 系列风速风向传感器设计的嵌入式驱动库&#xff0c;面向 Arduino 及兼容平台&#xff08;如 STM32、ESP32&#xff09;提供标准化、可移植的数据采集接口。该库并非通用串口协议解析器&#xff0c;而是深度适配日本 SigLab …...

OpenClaw故障排查大全:Phi-3-vision-128k接口连接异常解决方案

OpenClaw故障排查大全&#xff1a;Phi-3-vision-128k接口连接异常解决方案 1. 问题背景与排查思路 上周在本地部署Phi-3-vision-128k模型时&#xff0c;遇到了vllm服务超时、chainlit前端无响应等一系列问题。经过三天反复调试&#xff0c;终于梳理出一套完整的排查方案。本文…...

告别SBC音质焦虑!实测LC3编解码在TWS耳机上的音质与延迟表现(附对比数据)

告别SBC音质焦虑&#xff01;实测LC3编解码在TWS耳机上的音质与延迟表现&#xff08;附对比数据&#xff09; 作为一名长期被蓝牙音频压缩算法折磨的发烧友&#xff0c;第一次听到LC3编码的测试样机时&#xff0c;那种震撼感至今难忘——人声突然从蒙着纱布的状态变得触手可及&…...