python统计奇数个数_用Python查找数组中出现奇数次的那个数字

有一个数组,其中的数都是以偶数次的形式出现,只有一个数出现的次数为奇数次,要求找出这个出现次数为奇数次的数。 集合+统计 解题思路 最简单能想到的,效率不高。

有一个数组,其中的数都是以偶数次的形式出现,只有一个数出现的次数为奇数次,要求找出这个出现次数为奇数次的数。

集合+统计

解题思路

最简单能想到的,效率不高。利用集合的特性,通过 Python 的 set() 函数筛选出数组中有哪些数,然后遍历集合,使用 List 的 count 方法统计集合中每个元素在数组中出现的次数,如果是奇数次则直接返回该数。

Python 实现

def find_odd_times_num(arr):

num = set(arr)

for i in num:

if arr.count(i) % 2 != 0:

return i

排序+遍历

解题思路

将数组从小到大排序,然后遍历数组,并对出现的数进行计数b,当出现不同的数时,判断上一个数出现次数是奇数还是偶数。

Python 实现

def find_odd_times_num(arr):

arr.sort()

cnt = 1

for i in range(1, len(arr)):

if arr[i] != arr[i - 1]:

if cnt % 2 != 0:

return arr[i-1]

else:

cnt = 1

else:

cnt += 1

if cnt % 2 != 0:

return arr[i]

改进版本:

借用计数排序的思想,先找