首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >HackerRank动态数组问题-代码中的运行时错误

HackerRank动态数组问题-代码中的运行时错误
EN

Stack Overflow用户
提问于 2019-10-12 01:27:43
回答 3查看 3.4K关注 0票数 1

我正在试图解决这个动态阵列问题 on HackerRank。这是我的密码:

代码语言:javascript
运行
复制
#!/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,这个输入现在似乎正在工作,但是代码不适用于其他测试用例。这个代码有什么问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-01-24 09:26:52

您可以尝试这样做,它完全可以工作。(没有运行时错误)

用以下代码替换dynamicArray函数。希望这将对您(^_^)有所帮助。

def dynamicArray(n,查询):

代码语言:javascript
运行
复制
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 
票数 3
EN

Stack Overflow用户

发布于 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),但是您可能希望

代码语言:javascript
运行
复制
+ ret = []
    ...
-     print(lastAnswer)
+     ret.append(lastAnswer)
+ return ret

而不是。

由于不返回任何内容,函数默认返回Nonemap不能对其进行迭代。

票数 2
EN

Stack Overflow用户

发布于 2022-07-09 14:57:50

代码语言:javascript
运行
复制
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 answers
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58350100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档