力扣41 缺失的第乙個正數

2021-10-23 16:48:56 字數 490 閱讀 7758

題目描述:

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

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

思路:

如果沒有時間複雜度和空間複雜度要求,直接排序或者雜湊表均可解決。

常數級別的額外空間,則只能在輸入陣列原地交換。若是已排序的陣列,滿足x

對陣列每個元素進行遍歷,對於遍歷到的元素nums[i] = x,如果滿足x

由於每次的交換操作都會使得某乙個數交換到正確的位置,因此交換的次數最多為 n,整個方法的時間複雜度為 o(n),空間複雜度o(1)。

c++

class solution 

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

return n + 1;}};

力扣41 缺失的第乙個正數 題解

給你乙個未排序的整數陣列,請你找出其中沒有出現的最小的正整數。示例 1 輸入 1,2,0 輸出 3 示例 2 輸入 3,4,1,1 輸出 2 剛開始,覺得這道題可能要考察時間複雜度,因為正確率只有40 懷疑存在坑導致樣例通不過。寫完 沒想到一遍執行就過了。複雜度還不錯,o n 我使用雜湊表來儲存陣列...

力扣 題目41 缺失的第乙個正數

1.首先題目中提到我們只需要輸出 最小的正整數即可 那麼只看正數 0和負數都不看了 2.超過vector長度的數字也不用看 因為最好的結果 也就是1,2,3,4 5是解 也就是說最小的正整數的解 最大也就是vector的長度 1 而超過vector長度的自然也不用管 知道上面兩個前提之後再來看下面兩...

力扣刷題 41 缺失的第乙個正數

思路 參考了大佬的方法三 將陣列視為雜湊表 整體的思路是每乙個正整數i對應的下標為i 1,通過for及while迴圈將每個正整數交換到正確的位置,然後從第0位開始迴圈查詢,如果出現數 位不匹配則輸出該下標本該對應的正數,即為缺失的第乙個正數。原地雜湊 雜湊函式為 f nums i nums i 1 ...