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

LeetCode 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 <= nums.length <= 5 * 105
  • -231 <= nums[i] <= 231 - 1

思路

想要实现题目要求的时空限制,可以利用哈希表。

根据题目分析,我们只需要考虑在 [ 1,numsize ]范围内的数据,如果数据都不在该范围内,则应该返回 1。构建哈希表的哈希方法是:该范围内数的地址 = 数值减一,然后将该地址标记,标记方法为取负,在此之前,需要将所有小于等于0的数换为 numsize+1。

标记之后遍历数组,出现的第一个正数的下标加1便是结果。

代码

#include <stdio.h>
#include <stdlib.h>
#include <math.h>int firstMissingPositive(int *nums, int numsSize);int main()
{int size = 2;int nums[4] = {2, 1};int res = firstMissingPositive(nums, size);printf("%d", res);return 0;
}int firstMissingPositive(int *nums, int numsSize)
{for (int i = 0; i < numsSize; i++){if (nums[i] <= 0){nums[i] = numsSize + 1;}}for (int i = 0; i < numsSize; i++){int t = fabs(nums[i]);if (t < numsSize + 1 && nums[t - 1] > 0){nums[t - 1] = -nums[t - 1];}}int i;for (i = 0; i < numsSize; i++){if (nums[i] >= 0){break;}}return i + 1;
}

 

http://www.lryc.cn/news/131861.html

相关文章:

  • 学单片机有什么用?
  • Go 1.21新增的 slices 包详解(二)
  • 解决charles无法抓取localhost数据包
  • 基于注解优雅的实现接口幂等性
  • flutter:webview_flutter和flutter_inappwebview的简单使用
  • opencv进阶09-视频处理cv2.VideoCapture示例(打开本机电脑摄像头)
  • 大语言模型与语义搜索;钉钉个人版启动内测,提供多项AI服务
  • 小程序-基于vant的Picker组件实现省市区选择
  • 智慧水利利用4G物联网技术实现远程监测、控制、管理
  • sql server Varchar转换为Datetime
  • 什么文件传输协议才能保障跨国文件传输安全又稳定
  • LeetCode笔记:Weekly Contest 359
  • 使用Java和ChatGPT Api来创建自己的大模型聊天机器人
  • Maven介绍_下载_安装_使用_原理
  • 算法通关村十一关 | 位运算的规则
  • 【Rust】Rust学习 第十五章智能指针
  • 炒股怎样加杠杆?关于股票杠杠平台比例的选择知识分析
  • 【jenkins】jenkins流水线构建打包jar,生成docker镜像,重启docker服务的过程,在jenkins上一键完成,实现提交代码自动构建的功能
  • Pytest使用fixture实现token共享
  • You have docker-compose v1 installed, but we require Docker Compose v2.
  • nlopt在windows上的安装使用
  • 【React学习】React中的setState方法
  • ATTCK实战系列——红队实战(一)
  • 服务器感染了.360勒索病毒,如何确保数据文件完整恢复?
  • 【idea】社区版idea运行Tomcat
  • 网络安全面试题整理
  • docker使用code-server搭建开发环境 v2.0
  • Python写一个创意五子棋游戏
  • Nvidia Jetson 编解码开发(1)介绍
  • 【操作系统】24王道考研笔记——第一章 计算机系统概述