演算法題 找到1到n(亂序)中缺失的兩個數

2021-10-21 04:50:08 字數 674 閱讀 1665

要求用o(n)的時間複雜度進行查詢:

1. 申請額外空間n個空間,記錄當前數字是否出現過

def find1(a, n):

res =

b = [0 for x in range(n)]

for i in a:

b[i-1] = 1

for i in range(n):

if b[i] == 0:

return res

2.利用數學公式,先求1到n的平方和和1到n的平方和,再求1到n的平方和和1到n的和,兩式相減解方程

def find2(a, n):

sum1, sum2, sum1_, sum2_ = 0, 0, 0, 0

for i in a:

sum1 += i

sum1_ += i**2

for i in range(1, n+1):

sum2 += i

sum2_ += i**2

sum_ = sum2 - sum1

sum__ = sum2_ - sum1_

for i in range(n):

if i**2 + (sum_ - i) ** 2 == sum__:

return [i, sum_-i]

0到n 1中缺失的數字

一 題目 乙個長度為n 1的遞增排序陣列中的所有數字都是唯一的,並且每個數字都在範圍0到n 1之內。在範圍0到n 1的n個數字中有且只有乙個數字不在該陣列中,請找出這個數字。二 思路 分析易知,陣列形式如下 如果從頭到尾依次比較值與小標是否相等,時間複雜度為o n 效率低。由於是排序陣列,我們繼續考...

演算法題 從1到n的正數中1的出現次數

輸入乙個整數n,求從1到n這n個正數中,1出現的次數。例如 輸入12,出現一的數字有1,10,11,12共有5個1,則輸出5.最簡單的方法,我們可以遍歷從1到n的每乙個數字k,對於k我們計算出它其中包含的1的個數,方法其實很簡單,只需要分別判斷個位,十位,百位,千位等的每一位是否為1,然後用計數器記...

LeetCode 0到n 1中缺失的數字

非商業,leetcode鏈結附上 進入正題。題目 乙個長度為n 1的遞增排序陣列中的所有數字都是唯一的,並且每個數字都在範圍0 n 1之內。在範圍0 n 1內的n個數字中有且只有乙個數字不在該陣列中,請找出這個數字。示例 示例 1 輸入 0,1,3 輸出 2 示例 2 輸入 0,1,2,3,4,5,...