首页 > 解决方案 > 提高简单推送弹出“堆栈”的性能

问题描述

我被要求在 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:])

所以我不确定为什么我弄错了..也许是由于推和流行?

标签: pythonperformance

解决方案


推荐阅读