Leetcode演算法Java全解答--缺失的第一個正數
阿新 • • 發佈:2018-12-01
Leetcode演算法Java全解答–缺失的第一個正數
題目
給定一個未排序的整數陣列,找出其中沒有出現的最小的正整數。
示例 1:
輸入: [1,2,0]
輸出: 3
示例 2:
輸入: [3,4,-1,1]
輸出: 2
示例 3:
輸入: [7,8,9,11,12]
輸出: 1
說明:
你的演算法的時間複雜度應為O(n),並且只能使用常數級別的空間。
解答
public int firstMissingPositive(int[] nums) { if(nums.length == 0) return 1; //排序 Arrays.sort(nums); int k = 1; for(int i = 0;i < nums.length ;i++) { //去負 if(nums[i] <= 0) { continue; } //去重 if(i > 0 && nums[i] == nums[i-1]) continue; if(nums[i] != k ) { return k; } k++; } return nums[nums.length-1]+1; }