Меня попросили дать интервью на 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:])
Так что я не совсем уверен, почему я ошибся .. может, это было из-за толчка и популярности?