我正在完成Foobar的“离子通量重新标记”挑战。
下面是我的代码:
def find_parent(to_find, max_nodes, height):
current_value = max_nodes
right = current_value - 1
left = current_value - 2**height
height -= 1
if(left == to_find or right == to_find):
return current_value
elif(to_find < left):
return find_parent(to_find, left, height)
else:
return find_parent(to_find, right, height)
def solution(h, q):
if(h > 30 or h < 1):
raise ValueError('Height is outside of bounds')
if(len(q) > 10000 or len(q) < 1):
raise ValueError('Flux converters list is outside of bounds')
max_nodes = (2**h) - 1
parent_list = []
for i in q:
print(i)
if (i < max_nodes and i > 0):
parent_list.append(find_parent(i, max_nodes, h - 1))
else:
parent_list.append(-1)
return parent_list
上面的代码对于我们被告知的所有给定测试数据都非常适用,但是当在Foobar网站上在线运行时,被告知所有测试均失败。
知道为什么吗?
谢谢