python實現尋找 n 個數的序列中缺失的數
阿新 • • 發佈:2020-11-29
給定一個包含 0, 1, 2, ..., n 中 n 個數的序列,其中缺了一個數字,找出這個數字 示例 1: 輸入: [3,0,1] 輸出: 2 示例 2: 輸入: [9,6,4,2,3,5,7,0,1] 輸出: 8 設計思路: 思路一:當n不太大時,可以先求1~n的和,然後減去數列中所有數的和,即為缺失的那個數字,時間複雜度O(n),空間複雜度O(1) 思路二:利用異或特性,先異或1~n,再異或數列中所有數,將兩個結果異或,利用異或的結合律和恆等率特性,即可得到缺失的這個數 def getnum(arr): if arr == None or len(arr)<=0: print('輸入引數錯誤') return -1 suma = 0 sumb = 0 i = 0 while i<len(arr): suma = suma + arr[i] sumb = sumb + i i+=1 sumb=sumb+len(arr) return sumb-suma def getnum1(arr): if arr == None or len(arr)<=0: print('輸入引數錯誤') return -1 a=arr[0] b=1 lens = len(arr) i=1 while i<lens: a=a^arr[i] i+=1 i=2 while i<=lens: b=b^i i+=1 return a^b if __name__=='__main__': arr=[9,6,4,2,3,5,7,0,1] print(getnum1(arr))