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

2025年- H15-Lc123-41.缺失的第一个正数(普通数组)---java版

1.题目描述

在这里插入图片描述

2.思路
在这里插入图片描述
例子1:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将非正数全部替换成 n+1,因为我们只关心 [1, n] 范围内的正整数,所以把所有 ≤ 0 的数变成 n+1(一定不在 [1, n] 范围中)。

在这里插入图片描述
例子2:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
思路2:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.代码实现

class Solution {public int firstMissingPositive(int[] nums) {//首先查看数组个数,了解区间范围int n=nums.length;//如果遇到负数,直接置成1-N之外的数,比如N+1for(int i=0;i<n;i++){if(nums[i]<=0){nums[i]=n+1;}}//3.把数组中在区间1~n遇到的数字标记为负数,代表已经遇见过for(int i=0;i<n;i++){//获取当前的数字???不懂int num=Math.abs(nums[i]);//在第二个循环中,我们遍历数组时需要获取每个元素的绝对值,这是因为在标记过程中,我们已经将某些数字的对应位置标记为了负数。当我们再次遇到这些数字时,我们需要使用绝对值来避免错误地修改已经标记过的元素。//假设我们遇到了一个已经被标记为负数的位置(表示这个数字已经出现),为了避免再次误操作,我们需要取绝对值。这样我们就能正确处理负数和正数之间的关系。if(num<=n){nums[num-1]=-Math.abs(nums[num-1]);}}for(int i=0;i<n;i++){if(nums[i]>0){return i+1;}}return n+1;}
}

方法二:

import java.awt.font.NumericShaper;public class H41 {public int firstMissingPositive(int[] nums) {int n=nums.length;for(int i=0;i<n;++i) {//索引从0~n-1,元素从1~n//比如索引2的位置应该放着元素3,所以nums[2]=3while (nums[i] > 0 && nums[i] <= n && nums[nums[i] - 1] != nums[i]) {//如果该元素没在对应的索引上,则交换两者位置,//原始的nums={3,4,-1,1},交换完的nums={1,-1,3,4},正确区间1,2,3,4int temp = nums[nums[i] - 1];nums[nums[i] - 1] = nums[i];nums[i] = temp;}}//断当前位置 i 上的数字是不是 i + 1。如果不是,说明 i + 1 这个正整数缺失了,就立即返回它。for(int i=0;i<n;i++){if(nums[i]!=i+1){return i+1;}}//for 循环没找到错误位置,说明 1 到 n 的整数都在数组中,那缺的数就是 n + 1return n+1;}public static void main(String[] args){H41 test06=new H41();int[] nums={3,4,-1,1};int res= test06.firstMissingPositive(nums);System.out.println("缺失的第一个正整数"+res);}
}
http://www.xdnf.cn/news/3303.html

相关文章:

  • 格雷希尔用于工业气体充装站的CZ系列气罐充装转换连接器,其日常维护有哪些
  • linux jounery 日志相关问题
  • 高性能架构设计-分库分表
  • 声明:个人从未主动把文章设置为仅vip可读
  • 国内 AI 发展路线分析
  • /var/log/sssd/` 目录解析
  • 【Linux】gcc/g++配置
  • ROS2与Carla安装设备(其三)测试 ROS 2
  • 【MySQL数据库】事务
  • [第十五章][15.3.2 shellcode注入攻击]ret2shellcode+[NewStarCTF 公开赛赛道]ret2shellcode
  • LiP-MS与TPP联用:千金藤素在高尿酸血症中的抗神经炎症作用
  • 玩转Nginx
  • 极狐GitLab 分支管理功能介绍
  • ALLEGRO怎么外扩或内缩铜皮shape?
  • 美国国家生物技术信息中心NCBI介绍
  • 信号完整性简介第二篇
  • 2025A卷-传递悄悄话
  • 01_K近邻
  • Java 集合框架优化:从基础到高级应用
  • YPay标准版系统-五彩绚丽首页主题V1.0.0
  • 2025大模型应用爆发,算力保障成关键
  • 实用Chrome插件备忘
  • 科研 | 光子技术为人工智能注入新动力
  • PCB设计工艺规范(三)走线要求
  • 第15篇:Linux设备驱动程序入门<二>
  • QuecPython+aLiYun:快速连接阿里云IoT平台
  • C语言写文件模式错误
  • 制作一款打飞机游戏35:生成系统
  • 字符串模式匹配之KMP算法的理解和应用
  • 泛微OA.E9--07--IDEA搭建后端二开环境