Повысить производительность простого push pop «стека» - PullRequest
0 голосов
/ 12 ноября 2018

Меня попросили дать интервью на Hackerrank для реализации стека. Одним из методов стека был 'incr', который увеличивает значение на нижнюю часть элементов стека. Хотя я правильно выполнил базовые тестовые задания, некоторые из них «истекли».

class Stack:
    def __init__(self):
        self.stack = []
    def push(self, element):
        self.stack.append(element)
    def pop(self):
        if self.stack:
            self.stack.pop()
    def incr(self, num_elements, value):
        '''Increments bottom num_elements by value'''
        for idx in range(num_elements):
            self.stack[idx] += value
    def print_top(self):
        print(self.stack[-1])

Я предполагаю, что моя реализация была слишком медленной. Я не уверен, как сделать это быстрее. Я попытался заменить incr следующим списком, но это не имело существенного значения, когда я рассчитал его с миллионом элементов.

[x + value for x in self.stack[:num_elements]].extend(self.stack[num_elements:])

Так что я не совсем уверен, почему я ошибся .. может, это было из-за толчка и популярности?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...