我正在试图解决这个动态阵列问题 on HackerRank。这是我的密码:
#!/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,这个输入现在似乎正在工作,但是代码不适用于其他测试用例。这个代码有什么问题?
发布于 2021-01-24 09:26:52
您可以尝试这样做,它完全可以工作。(没有运行时错误)
用以下代码替换dynamicArray函数。希望这将对您(^_^)有所帮助。
def 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 发布于 2019-10-12 01:51:22
您的问题的答案在于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不能对其进行迭代。
发布于 2022-07-09 14:57:50
def dynamicArray(n, queries):
# Write your code here
arr=[[]for i in range(0,n)]
lastAnswer=0
answers=[]    
for query in queries:
    if query[0]==1:
        idx= (query[1]^lastAnswer)%n
        arr[idx].append(query[2])
    if query[0]==2:
        idx= (query[1]^lastAnswer)%n
        lastAnswer= arr[idx][query[2]% len(arr[idx])]
        answers.append(lastAnswer)
return answershttps://stackoverflow.com/questions/58350100
复制相似问题