本文主要是介绍leetcode-41. First Missing Positive,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
leetcode-41. First Missing Positive
题目:
Given an unsorted integer array, find the first missing positive integer.
For example,
Given [1,2,0] return 3,
and [3,4,-1,1] return 2.Your algorithm should run in O(n) time and uses constant space.
这题确实一道比较难的题,不过有的人可能看起来比较简单,反正我是看了答案才明白的。基本思路就是把i放到i-1的位置上,如果当前i-1位置上的值不对就不停的交换,直到i-1位置上的值是i就行或者i-1的位置不符合标准。原答案写的麻烦一些。我这里重写了一下
答案来源
public class Solution {public int firstMissingPositive(int[] nums) {if(nums==null || nums.length <1 ) return 1;for(int i = 0 ; i < nums.length ;){if(nums[i]>0 && nums[i]<nums.length && nums[nums[i]-1]!=nums[i]) swap(nums,nums[i]-1,i);else i++;}for(int i = 0 ; i < nums.length ;){if(nums[i]!= ++i)return i;}return nums.length+1;}private void swap(int[] nums, int i , int j){int t = nums[i];nums[i] = nums[j];nums[j] = t;}
}
这篇关于leetcode-41. First Missing Positive的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!