一串數字中,只有一個數字出現一次,其他數字都出現兩次,查找出這個數字(python)
阿新 • • 發佈:2019-03-22
一次 面試 個數字 一個 直接 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)