首页 > 解决方案 > 如何使用从array1中获取的元素作为array2的索引?

问题描述

这是函数:我想将 y 作为数组 s0 和 s1 的索引。我怎么做?这段代码有什么问题?

def dynamicArray(n, queries):
    # Write your code here
    lastAnswer=0
    s0=[]
    s1=[]
    l=len(queries)
    for i in range(l):
        qtype=queries[i][0]
        x=queries[i][1]
        y=queries[i][2]
        if qtype==1:
            if ((x^lastAnswer)%2==0):
                s0.append(y)
            elif ((x^lastAnswer)%2==1):
                s1.append(y)
        if qtype==0:
            if ((x^lastAnswer)%2==0):
                return lastAnswer==s0[y]
            elif ((x^lastAnswer)%2==1):
                return lastAnswer==s1[y]

标签: python-3.xdynamic-arrays

解决方案


您的代码的问题是您误解了 '^' 运算符。我假设您认为它进行幂运算,实际上它用于进行二进制(XOR)运算。Python**用于求幂。

看到这个:

Binary XOR(^)

It performs bit by bit XOR(exclusive-OR) on the two values. Here, XOR-ing 10(2) and 11(3) results in 01(1).

>>> 2^3

因此,您需要做的是按如下方式更改运算符,然后您可以将索引用作数组中的元素。

def dynamicArray(n, queries):
    # Write your code here
    lastAnswer=0
    s0=[]
    s1=[]
    l=len(queries)
    for i in range(l):
        qtype=queries[i][0]
        x=queries[i][1]
        y=queries[i][2]
        if qtype==1:
            if ((x**lastAnswer)%2==0):
                s0.append(y)
            elif ((x**lastAnswer)%2==1):
                s1.append(y)
        if qtype==0:
            if ((x**lastAnswer)%2==0):
                return lastAnswer==s0[y]
            elif ((x**lastAnswer)%2==1):
                return lastAnswer==s1[y]

推荐阅读