一串数字中,只有一个数字出现一次,其他数字都出现两次,查找出这个数字(python)

背景:

  电话面试&手撕代码 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 '''

猜你喜欢

转载自www.cnblogs.com/Mufasa/p/10577399.html