LeetCode(41)-First Missing Positive

版权声明:XiangYida https://blog.csdn.net/qq_36781505/article/details/83625882

41-First Missing Positive

Given an unsorted integer array, find the smallest missing positive integer.
Example 1:
Input: [1,2,0]
Output: 3
Example 2:
Input: [3,4,-1,1]
Output: 2
Example 3:
Input: [7,8,9,11,12]
Output: 1

嗯,这个题的意思就是给一个数组,然后找出数组里面缺失的最小的正数,思路比较简单,
但是,细节有点多

  • 思路如下
  • 1、排序
  • 2、数组为空或者数组最大值小于零,直接返回1
  • 3、定位到第一个大于0的数字的位置
  • 4、如果这个位置的数字大于1,直接返回1
  • 5、进入循环部分,这部分是考虑的第一大于0的数字为1的情况
    • 从第一个不为零的位置开始,然后定义一个值j与之相等,位置向下移动,那j++
    • 比较j与num[k]若j小就返回j;
    • 若数组中有重复的就跳过
public int firstMissingPositive(int[] nums) {
      Arrays.sort(nums);
      if(0==nums.length||nums[nums.length-1]<=0)return 1;
      int i=0;
      while (nums[i]<=0){
          i++;
      }
      if(nums[i]>1)return 1;
      for (int k=i,j=nums[i]; k<nums.length; k++) {
          if (nums[k]>j)return j;
          if(k-1>=0&&nums[k]==nums[k-1])continue;
          j++;
      }
      return nums[nums.length-1]+1;
  }

猜你喜欢

转载自blog.csdn.net/qq_36781505/article/details/83625882