isaacpei / algorithm-interview

Weekly algorithm questions for interview
18 stars 0 forks source link

Q002_rokic_solution #20

Open Rokicto opened 6 years ago

Rokicto commented 6 years ago

Question_ID: Q002

Language: python3

Time Cost: 13-mins

Time Complexity: O(n)???

Solution

  1. Easy one, but need code reviews to improve coding style.

My Code

#!/usr/bin/python
from collections import deque

class MaxQueue(object):
    """MaxQueue"""
    def __init__(self, init=None):
        self._queue = deque()
        self._max_queue = deque()

        if init:
            for element in init:
                self.push(element)

    def push(self, element):
        """Insert an element into the queue"""
        while self._max_queue and self._max_queue[-1] < element:
            self._max_queue.pop()

        self._max_queue.append(element)
        self._queue.append(element)

    def pop(self):
        """Pop out one element from queue"""
        try:
            element = self._queue.popleft()
        except IndexError:
            raise Exception("pop from empty maxqueue")

        if element == self._max_queue[0]:
            self._max_queue.popleft()

        return element

    def get_max(self):
        """Get max element of the queue"""
        if self._max_queue:
            return self._max_queue[0]

        return None

Other

How can i improve my solution? Any suggestions?

isaacpei commented 6 years ago

写的牛逼啊 也就是pop没检查异常吧

复杂度不会算??? 我不信

Rokicto commented 6 years ago

@isaacpei pop异常这个考虑到了,我想让它抛出的。我显式写一下,谢谢建议。已改。