Бинарный поиск, Тайм-аут - PullRequest
0 голосов
/ 09 марта 2020

Восхождение на таблицу лидеров. Прекращено из-за тайм-аута: (

Задача HackerRank для категории алгоритма.


Мой подход: чтобы уменьшить накладные расходы при вводе больших массивов, я использовал map () и поиск Binar работать с ним. Не повезло. Я сдал 7/11 тестовых случаев. Могу ли я попросить некоторую помощь для улучшения моего кода. Код ниже пока мое решение. Мне нужна помощь, чтобы улучшить его. 1008 * Описание проблемы

class Score_board:
    def climbingLeaderboard(self, scores, alice):
        self.boardScores = sorted(set(scores), reverse=True)
        alice_rank = list(map(self.rankBoard,alice))
        return alice_rank

    def rankBoard(self, current):
        score_bank = self.boardScores
        midIndex = len(score_bank)//2
        while midIndex > 0:
            if current in score_bank:
                return(self.boardScores.index(current)+1)
            elif current < score_bank[midIndex]:
                score_bank = score_bank[midIndex:]
                midIndex = len(score_bank)//2
            elif current > score_bank[midIndex]:
                score_bank = score_bank[:midIndex]
                midIndex = len(score_bank)//2
        else:
            boardIndex = self.boardScores.index(score_bank[0])
            if current in score_bank:
                return(self.boardScores.index(current)+1)
            elif current > score_bank[0] and boardIndex == 0:
                return(1)
            elif current < score_bank[0] and boardIndex == (len(self.boardScores)-1):
                return(boardIndex + 2)
            elif current > score_bank[0]:
                return(boardIndex)
            elif current < score_bank[0]:
                return(boardIndex + 2)

if __name__ == '__main__':
    scores_count = int(input())
    scores = list(map(int, input().rstrip().split()))
    alice_count = int(input())
    alice = list(map(int, input().rstrip().split()))
    coord = Score_board()
    result = coord.climbingLeaderboard(scores, alice)
    print('\n'.join(map(str, result)))
    print('\n')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...