class Solution {
public int firstMissingPositive(int[] a) {
int l = 0;//表示目前已经冲到的数
int r = a.length;//表示可以冲的上限,也就是在网上就冲不上去了
while(l<r){
if(a[l]==l+1){
l++;//表示0位置的数是可以的,冲到了
}else if(a[l]<=l||a[l]>r||a[l]==a[a[l]-1]){
swap(a,l,--r);//记住r--和--r在这里完全不同,记住,一个是先传,一个是先-
}else{
swap(a,l,a[l]-1);
}
}
return l+1;
}
public void swap(int[] a,int i,int j){
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
Leetcode41缺失的第一个正数,其实自己做真坐不上,而且老师讲的方法,为什么对,就是交换那个地方,也不知道,反正这个题不适合我
最新推荐文章于 2023-12-28 12:53:22 发布