我正在尝试在HackerRank上解决此Dynamic Array problem。这是我的代码:
#!/bin/python3
import math
import os
import random
import re
import sys
#
# Complete the 'dynamicArray' function below.
#
# The function is expected to return an INTEGER_ARRAY.
# The function accepts following parameters:
# 1. INTEGER n
# 2. 2D_INTEGER_ARRAY queries
#
def dynamicArray(n, queries):
lastAnswer = 0
a = []
array_result = []
for k in range(n):
a.append([])
for i in queries:
x = i[1]
y = i[2]
if i[0] == 1:
seq = ((x ^ lastAnswer) % n)
a[seq].append(y)
elif i[0] == 2:
seq = ((x ^ lastAnswer) % n)
lastAnswer = a[seq][y]
array_result.append(lastAnswer)
return array_result
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
first_multiple_input = input().rstrip().split()
n = int(first_multiple_input[0])
q = int(first_multiple_input[1])
queries = [] # 1 0 5, 1 1 7, 1 0 3, ...
for _ in range(q):
queries.append(list(map(int, input().rstrip().split())))
result = dynamicArray(n, queries)
fptr.write('\n'.join(map(str, result)))
fptr.write('\n')
fptr.close()
我遇到运行时错误:
回溯(最近通话最近一次):
文件“ Solution.py”,第50行,位于
fptr.write('\ n'.join(map(str,result)))
TypeError:“ NoneType”对象不可迭代
有人可以帮我吗,我似乎找不到解决方法。
这是输入:
2 5
1 0 5
1 1 7
1 0 3
2 1 0
2 1 1
谢谢。
更新:由于@cireo,此输入现在似乎可以使用,但是该代码不适用于其他测试用例。这段代码有什么问题?
答案 0 :(得分:1)
您问题的答案在于hackerrank提供的样板。
# The function is expected to return an INTEGER_ARRAY.
您还可以看到,result = dynamicArray(n, queries)
应该从map(str, result)
返回一个整数列表,这会引发异常。
在您的代码中您进行了print(lastAnswer)
,但您可能想要
+ ret = []
...
- print(lastAnswer)
+ ret.append(lastAnswer)
+ return ret
相反。
由于您不返回任何内容,因此该函数默认返回None
,而map
无法对其进行迭代。
答案 1 :(得分:1)
用此代码替换您的 dynamicArray 函数。希望这对你有帮助(^_^)。
定义动态数组(n,查询):
col = [[] for i in range(n)]
res = []
lastanswer = 0
for q in queries:
data = (q[1]^lastanswer)%n
if q[0] == 1:
col[data].append(q[2])
elif q[0] == 2:
ind_x = q[2]%len(col[data])
lastanswer = col[data][ind_x]
res.append(lastanswer)
return res