所以我正在检查可编码性网站以进行在线代码评估。我尝试了演示示例http://codility.com/c/intro/demoRVC9C9-W8X来熟悉系统。
给出了一个由 N 个不同整数组成的零索引数组 A。该数组包含 [1..(N + 1)] 范围内的整数,这意味着恰好缺少一个元素。你的目标是找到那个缺失的元素。写一个函数:
类解决方案{公共int解决方案(int [] A);}
给定一个零索引数组 A,返回缺失元素的值。例如,给定数组 A 使得:
A[0] = 2
A[1] = 3
A[2] = 1
A[3] = 5该函数应返回 4,因为它是缺少的元素。假设:N是[0..100,000]范围内的整数;A 的元素都是不同的;数组 A 的每个元素都是 [1..(N + 1)] 范围内的整数。
复杂:
预期的最坏情况时间复杂度为 O(N);
预期的最坏情况空间复杂度为 O(1),超出输入存储(不计算输入参数所需的存储)。
可以修改输入数组的元素。
这是我在 Python 中的解决方案:
def solution(A):
tmp = [ 0 for x in xrange( len(A) + 1 ) ]
for i,x in enumerate( A ):
tmp[ x - 1 ] = 1
return 1 + tmp.index( 0 )
我很确定我的解决方案不会被接受,因为空间复杂度是 O(n),其中 n 是 A 的大小。但是系统以满分接受了我的答案。我在这里错过了什么吗?