LeetCode(41)-First Missing Positive
阿新 • • 發佈:2018-11-06
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;
}