Leetcode 41 缺失的第乙個正數

2021-09-11 05:27:41 字數 711 閱讀 2978

給定乙個未排序的整數陣列,找出其中沒有出現的最小的正整數。

示例 1:

輸入: [1,2,0]

輸出: 3

示例 2:

輸入: [3,4,-1,1]

輸出: 2

示例 3:

輸入: [7,8,9,11,12]

輸出: 1

說明:

你的演算法的時間複雜度應為o(n),並且只能使用常數級別的空間。

這個題第乙個想法是排序,然後遍歷即可,但是時間複雜度是o(n),所以不能用這個。

第二個想法我們可以用乙個ans陣列來記錄,即ans[nums[i]]=1.陣列的長度是max(nums)+1。但是只能用常數級別,不能額外開陣列,所以我們也不能用。

我們可以想想,如果這個陣列是不缺少數字的,那麼這個陣列的數字和索引是一 一對應的。對於[3,4,-1,1],第乙個數字是3,我們把3和-1交換,重複操作,到遍歷完。

最後再遍歷一遍nums,索引和數字對應不上的,就輸出。

class solution 

}for (int i = 0; i < n; ++i)

return n + 1;

}};

leetcode 41 缺失的第乙個正數

給定乙個未排序的整數陣列,找出其中沒有出現的最小的正整數。示例 1 輸入 1,2,0 輸出 3 示例 2 輸入 3,4,1,1 輸出 2 示例 3 輸入 7,8,9,11,12 輸出 1 說明 你的演算法的時間複雜度應為o n 並且只能使用常數級別的空間。題目規定了時間複雜度為o n 空間複雜度為常...

LeetCode 41 缺失的第乙個正數

給定乙個未排序的整數陣列,找出其中沒有出現的最小的正整數。示例 1 輸入 1 2,0 輸出 3示例 2 輸入 3 4,1,1 輸出 2示例 3 輸入 7 8,9 11,12 輸出 1說明 這題確實挺坑的,首先對陣列排個序,當時想用陣列標記的,沒想到還有int max級別的數,不過vector應該是裝...

LeetCode 41 缺失的第乙個正數

給定乙個未排序的整數陣列,找出其中沒有出現的最小的正整數。示例 1 輸入 1,2,0 輸出 3 示例 2 輸入 3,4,1,1 輸出 2 示例 3 輸入 7,8,9,11,12 輸出 1 說明 你的演算法的時間複雜度應為o n 並且只能使用常數級別的空間。只考慮1到n的數字,應該使得 nums i ...