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,依次找下去 一直找到第乙個沒有出現的正整數,...