亂序中找出第一次未出現的正整數

2021-08-20 08:12:21 字數 838 閱讀 5532

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.

尋找陣列中第乙個未出現的正整數,題目本身比較常見,關鍵在於題目要求只能使用常數額外空間。

a:雖然不能再另外開闢非常數級的額外空間,但是可以在輸入陣列上就地進行swap操作。

思路:交換陣列元素,使得陣列中第i位存放數值(i+1)。最後遍歷陣列,尋找第乙個不符合此要求的元素,返回其下標

。整個過程需要遍歷兩次陣列,複雜度為o(n)。

下圖以題目中給出的第二個例子為例,講解操作過程。

最後,具體實現如下:

class solution else

}for(int i=0;i

1 class solution 

12 for (i = 0; i < n; ++i)

13 if (a[i] != (i+1))

14 return i+1;

15 return n+1;

16 }

17 };

陣列中未出現的最小正整數

陣列中未出現的最小正整數 給定乙個無序陣列arr,找到陣列中未出現的最小正整數 例如arr 1,2,3,4 返回1 arr 1,2,3,4 返回5 要求 時間複雜度為o n o n o n 空間複雜度為o 1 o 1 o 1 輸入描述 第一行為乙個整數n。表示陣列長度。接下來一行n個整數表示陣列內的...

陣列中未出現的最小正整數

給定乙個無序陣列arr,找到陣列中未出現的最小正整數 例如arr 1,2,3,4 返回1 arr 1,2,3,4 返回5 要求 時間複雜度為o n 空間複雜度為o 1 示例1 1,2,3,4 1 方法二 先原地排序,將1 n之間的數字通過交換的方式進行排序 例如 2,3,1,4 第乙個元素nums ...

求陣列中未出現的最小正整數

題目 給定乙個無序整型陣列arr,找到陣列中未出現的最小正整數。要求時間複雜度為o n 空間複雜度為o 1 例如 arr 1,2,3,4 返回1。arr 1,2,3,4 返回5。解法 一 窮舉查詢 最小正整數是1,所以常規的方法就是在陣列中找1,然後是2,依次找下去 一直找到第乙個沒有出現的正整數,...