我正在研究有关hackerrank的问题。任务是输出数组中项目(整数)的数量,然后通过从数组中减去最小值来更新每个项目。如果项目本身等于最小值,请弹出该项目。重复(输出数组长度),直到有一个空数组为止。
我对解决方案使用了递归,我猜这是造成问题的原因,因为带有循环的解决方案可以正常工作。问题在于,输出似乎与预期的相似,但是正在触发站点提供的代码中的错误。输出还会在不同的解释器中匹配,并且不会在main之外引发错误。
def cutTheSticks(arr):
small = min(arr)
#base case: output arr size when all items are the same
if arr.count(small) == len(arr):
return print(len(arr))
#output arr size before updating
print(len(arr))
newArr = []
#update arr
for i in range(len(arr)):
if arr[i] > small:
newArr.append(arr[i] - small)
#run on updated arr
return cutTheSticks(newArr)
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
n = int(input())
arr = list(map(int, input().rstrip().split()))
result = cutTheSticks(arr)
fptr.write('\n'.join(map(str, result)))
fptr.write('\n')
fptr.close()
主要部分引发错误,内容为:
Traceback (most recent call last):
File "Solution.py", line 30, in <module>
fptr.write('\n'.join(map(str, result)))
TypeError: 'NoneType' object is not iterable