Python: вне диапазона - PullRequest
       3

Python: вне диапазона

0 голосов
/ 12 июля 2020

Когда я пытаюсь сравнить текущее состояние j и nums [i + 1], появляется сообщение «Индекс списка вне допустимого диапазона». Но я видел, что другой пост сделал то же самое и работал сравнить текущий элемент со следующим элементом в списке python Почему?

class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        nums.sort()
        
        count = -1
        for i,j in enumerate(nums):
            count += 1
            if count > len(nums) / 2:
                return nums[i]
            if j != nums[i+1]:
                count = 0

Ответы [ 2 ]

3 голосов
/ 12 июля 2020

Вы можете go шаг за шагом пройти алгоритм. Что оно делает? Он перебирает список чисел и сравнивает их с их правым соседом (nums[i+1]).

Проблема заключается в последнем элементе в списке. Нет правильного соседа. Следовательно, запрошенный индекс выходит за пределы допустимого диапазона.

Ответ, который вы упомянули, поэтому повторяется по всем элементам, кроме последнего (nums[:-1])

2 голосов
/ 12 июля 2020

Вы должны использовать это: enumerate (nums [: - 1])
Поскольку вы сравниваете j и num [i + 1], и i + 1 будет вне диапазона.

class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        nums.sort()
        
        count = -1
        for i,j in enumerate(nums[:-1]):
            count += 1
            if count > len(nums) / 2:
                return nums[i]
            if j != nums[i+1]:
                count = 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...