Попытка увидеть, существует ли N и его 2N в списке - PullRequest
0 голосов
/ 24 апреля 2020

Я задаю вопрос, где мне задают вопрос, есть ли в списке N и 2N. это мой код:

class Solution:
    def checkIfExist(self, arr: List[int]) -> bool:
        i = 0
        for number in arr:
            if number*2 in arr:
                return True 

По какой-то причине он возвращает true с этим вводом:

[-2,0,10,-19,4,6,-8]

Почему это происходит? Разве это не должно вернуть Ложь?

Ответы [ 2 ]

3 голосов
/ 24 апреля 2020

Это происходит потому, что 0 in arr и 2*0 in arr тоже. Так что, если вы считаете 0 особенным, вам следует выполнить специальный случай через if number and 2*number in arr:.

1 голос
/ 24 апреля 2020

Проблема в том, что 2N нуля также равно нулю, поэтому он должен быть в списке только один раз, чтобы функция вернула true.

Вы должны сделать специальную проверку для этого крайнего случая. Просто убедитесь, что у вас есть как минимум два нуля, чтобы считать, что оба 0 и 2 * 0 (N и 2 * N) находятся в списке как отдельные элементы.

например:

def has2N(a):
    return any(N for N in a if 2*N in a) or a.count(0) > 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...