有兩個(gè)索引 i-1和nums[i]敢艰,如果i-1==num[i],說明是同一個(gè)索引俊抵,如果不是分別判斷兩個(gè)索引上的點(diǎn)是否滿足索引排序的條件谁不。都不滿足的話,就進(jìn)行交換徽诲。
class Solution {
public int firstMissingPositive(int[] nums) {
if(nums==null||nums.length==0)return 1;
int i = 0 ;
while(i<nums.length)
{
if(nums[i]>0&&nums[i]<nums.length)
{
while(nums[i]!=i+1&&nums[nums[i]-1]!=nums[i])
{
int temp = nums[nums[i]-1];
nums[nums[i]-1]=nums[i];
nums[i]=temp;
// now nums[nums[i]-1]==nums[i];check nums[i] ;
// 可以保證nums[i]為索引的數(shù)都放到了對(duì)應(yīng)的位置刹帕。
if(nums[i]<=0||nums[i]>=nums.length)
break;
}
}
i++;
}
for(int j = 0 ;j<nums.length;j++)
{
if(nums[j]!=j+1)
return j+1;
}
return nums.length+1;
}
}