給定乙個包含 0, 1, 2, …, n 中 n 個數的序列,找出 0 … n 中沒有出現在序列中的那個數。
示例 1:輸入: [3,0,1]輸出: 2
示例 2:輸入: [9,6,4,2,3,5,7,0,1]輸出: 8
說明:你的演算法應具有線性時間複雜度。你能否僅使用額外常數空間來實現?
class
solution
:def
missingnumber
(self, nums: list[
int])-
>
int:
nums.sort(
)for i in
range
(len
(nums)):
if nums[i]
!=i:
return i
else
:return i+
1
給陣列排序,然後遍歷時對比,因為給定乙個包含 0, 1, 2, …, n 中 n 個數的序列,所以完整陣列元素應該等於下標。
而如果所有值都對應,那證明缺最後乙個值。
執行用時 :56 ms, 在所有 python3 提交中擊敗了94.91%的使用者記憶體消耗 :14.3 mb, 在所有 python3 提交中擊敗了34.96%的使用者
時間複雜度:o(nlogn)。由於排序的時間複雜度為 o(nlogn),掃瞄陣列的時間複雜度為 o(n),因此總的時間複雜度為o(nlogn)。
空間複雜度:o(1) 或o(n)。空間複雜度取決於使用的排序演算法,根據排序演算法是否進行原地排序(即不使用額外的陣列進行臨時儲存),空間複雜度為 o(1) 或 o(n)。不採用排序的方式,而是使用字典。進行兩次for迴圈即可。
di=
for i in nums:di[i]
=i for i in
range
(len
(nums)):
if i not
in di:
return i
else
:return i+
1
執行用時 :56 ms, 在所有 python3 提交中擊敗了94.91%的使用者記憶體消耗 :14.3 mb, 在所有 python3 提交中擊敗了34.96%的使用者
時間複雜度:o(n)。掃瞄陣列的時間複雜度為 o(2n),因此總的時間複雜度為 o(n)。考慮到任意數n,有n^n=0.易知:空間複雜度:o(n)。使用了乙個字典儲存資料
class
solution
:def
missingnumber
(self, nums)
->
int:
k=len(nums)
for i,j in
enumerate
(nums)
: k^
=i^j
return k
這裡解釋一下k=len(nums)。
對給定乙個包含 0, 1, 2, …, n 中 n 個數的序列,0……n^0……n=0.
但如果當中缺失乙個數,那麼兩個序列實際上變為01
23…n-101
3…n-1n
解釋:對乙個長度為10的列表,本應該0-9,如果缺了2,那麼實際上是0-1,3-10,共計十個數。所以正常兩個序列相乘就多出了乙個數:10,所以初始化k=len(nums)=10
執行用時 :36 ms, 在所有 python3 提交中擊敗了99.50%的使用者記憶體消耗 :14.2 mb, 在所有 python3 提交中擊敗了34.96%的使用者
時間複雜度:o(n),僅一次迴圈採用高斯求和公式求和減去陣列求和。空間複雜度:o(1),僅乙個變數
class
solution
:def
missingnumber
(self, nums)
->
int:
k,sum=0,
(len
(nums)*(
len(nums)+1
))//2
for i in nums:
k+=i
return sum-k
時間複雜度:o(n),僅一次迴圈空間複雜度:o(1),僅乙個變數
力扣日記 405 數字轉16進製制 位運算
給定乙個整數,編寫乙個演算法將這個數轉換為十六進製制數。對於負整數,我們通常使用補碼運算方法。注意 十六進製制中所有字母 a f 都必須是小寫。十六進製制字串中不能包含多餘的前導零。如果要轉化的數為0,那麼以單個字元 0 來表示 對於其他情況,十六進製制字串中的第乙個字元將不會是0字元。給定的數確保...
標記法 缺失數字 力扣(LeetCode)
給定乙個包含0,1,2,n中 n 個數的序列,找出 0 n 中沒有出現在序列中的那個數。示例 1 輸入 3,0,1 輸出 2示例 2 輸入 9,6,4,2,3,5,7,0,1 輸出 8說明 你的演算法應具有線性時間複雜度。你能否僅使用額外常數空間來實現?看到這個題的第乙個思路是標記法,之前在那好像看...
力扣(LeetCode)缺失數字 個人題解
給定乙個包含0,1,2,n中 n 個數的序列,找出 0 n 中沒有出現在序列中的那個數。示例 1 輸入 3,0,1 輸出 2示例 2 輸入 9,6,4,2,3,5,7,0,1 輸出 8說明 你的演算法應具有線性時間複雜度。你能否僅使用額外常數空間來實現?思路有兩種,一種是求和,根據數學方法算出缺失項...