leetcode hot100数组:缺失的第一个正数

为了知道第一个缺失的正数,可以将所有的整数按照顺序放到数组里面,然后遍历数组,哪个地方不是对应的正数,那么就缺失了这个地方的对应的正数。

需要放进数组进行排列的数据需要满足要求:正数、大小小于等于数组大小的数

如何进行排列,只需要遍历到某个索引,然后将这个地方的数据放到合适的地方就行了。应当让这两个数交换:nums[i] 和nums[nums[i]-1],之所以减一就是为了满足上述要求。那么交换一次就行了吗?不行,因为交换过来的数不一定就是放到了合适的位置,所以需要while循环

class Solution {

public int firstMissingPositive(int[] nums) {

for(int i = 0;i<nums.length;i++){

int cur = nums[i];

while(cur>0&&cur<=nums.length&&cur!=nums[cur-1]){

int temp = cur;

nums[i] = nums[cur-1];

nums[cur-1] = cur;

cur = nums[i];

}

}

for(int i = 0;i<nums.length;i++){

if(nums[i]!=i+1){

return i+1;

}

}

return nums.length+1;

}

}

相关推荐
alonewolf_99几秒前
深入解析G1与ZGC垃圾收集器:原理、调优与选型指南
java·jvm·算法
数据大魔方30 分钟前
【期货量化实战】螺纹钢量化交易指南:品种特性与策略实战(TqSdk完整方案)
python·算法·github·程序员创富·期货程序化·期货量化·交易策略实战
豆沙沙包?31 分钟前
2026年--Lc334-2130. 链表最大孪生和(链表转数组)--java版
java·数据结构·链表
独自破碎E36 分钟前
二分查找-I
leetcode
千金裘换酒1 小时前
LeetCode 删除链表的倒数第N个结点
算法·leetcode
SweetCode1 小时前
【无标题】
开发语言·c++·算法
shughui1 小时前
Python基础面试题:语言定位+数据类型+核心操作+算法实战(含代码实例)
开发语言·python·算法
王老师青少年编程2 小时前
信奥赛C++提高组csp-s之拓扑排序详解
c++·算法·拓扑排序·csp·信奥赛·csp-s·提高组
kaikaile19952 小时前
matlab计算流场
人工智能·算法·matlab
老鼠只爱大米2 小时前
LeetCode算法题详解 42:接雨水
leetcode·动态规划·双指针·单调栈·接雨水·雨水收集