我正在尝试使用递归来解决Codility中的OddOccurrencesInArray问题,其中:
- 我们被赋予一个由N个元素组成的数组,N始终是奇数
- 除了一个元素外,数组中的所有元素都具有偶数次出现的总数
- 我们需要编写代码返回单个未配对值
例如,如果给定的数组是[9, 3, 9, 3, 7, 9, 9],则代码必须返回7,因为这是数组中唯一未配对的元素。
我的解决方案伪代码/思路如下:
- 排序数组
- 如果前两个元素相等,则删除它们,并在剩余元素上递归运行解决方案算法(排序后)即如果未找到未配对元素,则继续减小数组大小
- 如果前两个元素不相等,则第一个元素必须是未配对的项
我的实现方式是:
def solution(A):
# write your code in Python 3.6
if len(A) > 1:
A = sorted(A)
if A[0] != A[1]:
return A[0]
else:
solution(A[2:])
else:
return A[0]
我不断收到错误消息
无效的结果类型,应为int,但发现了。 运行时错误(测试程序以退出代码1终止)
有人能帮我弄清楚这是什么意思以及如何纠正吗?从算法上看,我认为我的解决方案是正确的,但我不明白为什么它没有返回我指定的整数值。