Как использовать элемент из массива1 в качестве индекса для массива2? - PullRequest
1 голос
/ 01 марта 2020

ЭТО ФУНКЦИЯ: Я хочу взять 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]

1 Ответ

0 голосов
/ 01 марта 2020

Проблема с вашим кодом в том, что вы неправильно понимаете оператор '^'. Я полагаю, что вы думаете, что это делает возведение в степень, где фактически используется для выполнения операции Binary (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]
...