美文网首页
41. First Missing Positive

41. First Missing Positive

作者: namelessEcho | 来源:发表于2017-09-26 21:00 被阅读0次

有两个索引 i-1和nums[i],如果i-1==num[i],说明是同一个索引,如果不是分别判断两个索引上的点是否满足索引排序的条件。都不满足的话,就进行交换。

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]为索引的数都放到了对应的位置。
                   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;
    }
}

相关文章

网友评论

      本文标题: 41. First Missing Positive

      本文链接:https://www.haomeiwen.com/subject/xeueextx.html