摘要:問題問題描述給定一個未排序的整數數組,找出其中沒有出現的最小的正整數。原因就在于使用的內置的函數的復雜度超過的比如的復雜度就是。
問題 問題描述
給定一個未排序的整數數組,找出其中沒有出現的最小的正整數。
說明你的算法的時間復雜度應為O(n),并且只能使用常數級別的空間。
首先因為只能使用常數級別的空間,就不能再建新的O(n)級的list,set等。然后就想到將列表去重去除非正數排序,最后循環當nums[i]和(i+1)不等是輸出。
class Solution: def firstMissingPositive(self, nums): """ :type nums: List[int] :rtype: int """ nums = list(set([i for i in nums if i > 0])) nums.sort() for i in range(len(nums)): if nums[i] != i + 1: return i + 1 return len(nums) + 1
但是這樣寫并不正確。原因就在于使用的Python內置的函數的復雜度超過的O(n), 比如sort()的復雜度就是O(nlogn)。詳細資料可以參考Python內置函數時間復雜度
經過思考,只需要將列表中在列表長度范圍內的正整數n移動到列表(n-1)的位置,然后再循環當nums[i]和(i+1)不等是輸出。
class Solution: def firstMissingPositive(self, nums): """ :type nums: List[int] :rtype: int """ k = len(nums) if k == 0: return 1 for i in range(k): while 0 < nums[i] <= k and nums[i] != nums[nums[i] - 1]: a = nums[nums[i] - 1] nums[nums[i] - 1] = nums[i] nums[i] = a for i in range(k): if nums[i] != i + 1: return i+1 return k + 1
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42765.html
摘要:小鹿題目算法思路桶排序思想。再遍歷數組,從下標開始判斷該下標是否存放規定的數據,如果不是則該下標就是這組數據中缺失的最小正整數。桶排序還可以實現在一組數據中查找重復的數據。 Time:2019/4/6Title: First Missing PositiveDifficulty: DifficultyAuthor: 小鹿 題目:First Missing Positive Give...
摘要:給定一個未排序的整數數組,找出其中沒有出現的最小的正整數。示例輸入輸出示例輸入輸出示例輸入輸出答案參考 給定一個未排序的整數數組,找出其中沒有出現的最小的正整數。 示例 1: 輸入: [1,2,0]輸出: 3 示例 2: 輸入: [3,4,-1,1]輸出: 2 示例 3: 輸入: [7,8,9,11,12]輸出: 1 答案參考: /** * @param {number[]} num...
摘要:分布式的管理和當我在談論架構時我在談啥狀態碼詳解無狀態協議和請求支持哪些方法分層協議棧有哪些數據結構運用場景說說你常用的命令為什么要有包裝類面向對象的特征是啥是啥有什么好處系統設計工程在線診斷系統設計與實現索引背后的數據結構及算法原理軟技能 HTTP 【HTTP】分布式session的管理 【HTTP】Cookie和Session 【HTTP】當我在談論RestFul架構時我在談啥?...
摘要:雪花算法生成的最終結果其實就是一個類型的長整型數字,這是一個大前提算法所有的內容都是針對這個數字進行運算的。根據上面的理論可以開始學習雪花算法。 針對每個公司,隨著服務化演進,單個服務越來越多,數據庫分的越來越細,有的時候一個業務需要分成好幾個庫,這時候自增主鍵或者序列之類的主鍵id生成方式已經不再滿足需求,分布式系統中需要的是一個全局唯一的id生成規則。既然號稱在全局分布式系統中唯一...
摘要:前言清明不小心就拖了兩天沒更了這是十道算法題的第二篇了上一篇回顧十道簡單算法題最近在回顧以前使用寫過的數據結構和算法的東西,發現自己的算法和數據結構是真的薄弱,現在用改寫一下,重溫一下。 前言 清明不小心就拖了兩天沒更了~~ 這是十道算法題的第二篇了~上一篇回顧:十道簡單算法題 最近在回顧以前使用C寫過的數據結構和算法的東西,發現自己的算法和數據結構是真的薄弱,現在用Java改寫一下,...
閱讀 1448·2019-08-29 17:14
閱讀 1650·2019-08-29 12:12
閱讀 730·2019-08-29 11:33
閱讀 3266·2019-08-28 18:27
閱讀 1444·2019-08-26 10:19
閱讀 909·2019-08-23 18:18
閱讀 3529·2019-08-23 16:15
閱讀 2543·2019-08-23 14:14