Python练习#3 在奇数的成对数组中寻找未配对的值
给出一个由N个整数组成的非空数组A。该数组包含奇数个元素,数组中的每个元素都可以与另一个具有相同价值的元素配对,只有一个元素没有配对。
例如,在数组A中,如:
a[0] = 9 a[1] = 3 a[2] = 9
A[3] = 3 A[4] = 9 A[5] = 7
A[6] = 9
索引0和2的元素的值是9。
索引1和3的元素的值是3。
索引4和6的元素的值是9。
索引5的元素的值是7,并且是未配对的。
写一个函数,给定一个由满足上述条件的N个整数组成的数组A,返回未配对元素的值。
代码如下:
def odd(a):counts = {}# 循环浏览数组中的每个元素for num in a:# 如果这个值还没有在字典里,就用1的计数把它加进去。if num not in counts:counts[num] = 1# 如果该值已经在字典中,则增加其计数else:counts[num] += 1# 循环浏览字典,找到计数为1的键for key in counts:if counts[key] % 2 == 1:# 返回键,也就是未配对的元素return key 总结:
这次运用字典来计数和检索,通过字典的1对1检索特性,可以减少代码的时间复杂度
原本运用的是双层的for循环来解决这个问题,但是这样做的时间复杂度为O(n**2),在大数组情况下耗费的时间太多了
count函数可以返回数组中特定元素出现的次数,如:
a = [1, 2, 4, 2, 1]
a.count(1) #输出结果为2,即1出现了两次 要继续努力!
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
