1. 程式人生 > >一串數字中,只有一個數字出現一次,其他數字都出現兩次,查找出這個數字(python)

一串數字中,只有一個數字出現一次,其他數字都出現兩次,查找出這個數字(python)

一次 面試 個數字 一個 直接 fas 其中 3.2 !=

背景:

  電話面試&手撕代碼 2019.03.22 Mufasa

問題:

  一串數字中,只有一個數字出現一次,其他數字都出現兩次,查找出這個數字

條件:

  這串數字是有序數

解決方法:

 核心代碼只有4行

  類似冒泡,但又不是冒泡只比較其中的偶數元素和偶數下一個元素,即:

d1 = -1
for i in range(int(len(d0) / 2)): if d0[i * 2] != d0[i * 2 + 1]: d1 = i * 2 break
 如果沒有查找到這個數(其實上面的遍歷,直接忽略了最後一個數字),那麽這個數字就是d0[-1],index = -1

代碼實現:

 1 # d0 輸入數值,d1 index數值,d2 所求的出現一次的數值
 2 # 時間復雜度為O(n),最優為1,最劣為n-1,空間復雜度為O(1)
 3 d0 = [int(x) for x in input().split()]
 4 d1 = -1
 5 
 6 for i in range(int(len(d0) / 2)):
 7     if d0[i * 2] != d0[i * 2 + 1]:
 8         d1 = i * 2
 9         break
10 
11 d2 = d0[d1]  # 其中d2即為所求數值
12 print
(d2) 13 ‘‘‘ 14 測試用例1: 15 輸入:1 1 2 2 3 3 4 4 5 5 6 16 輸出:6 17 18 測試用例2: 19 輸入:1 1 2 2 3 4 4 5 5 20 輸出:6 21 ‘‘‘

一串數字中,只有一個數字出現一次,其他數字都出現兩次,查找出這個數字(python)