Python Leetcode
225.用队列实现栈
class MyStack:
def __init__(self):
"""
Initialize your data structure here.
"""
self.list = []
def push(self, x: int) -> None:
"""
Push element x onto stack.
"""
self.list.append(x)
def pop(self) -> int:
"""
Removes the element on top of the stack and returns that element.
"""
if self.list == None:
return False
return self.list.pop()
def top(self) -> int:
"""
Get the top element.
"""
return self.list[-1]
def empty(self) -> bool:
"""
Returns whether the stack is empty.
"""
return self.list == []
# Your MyStack object will be instantiated and called as such:
# obj = MyStack()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.top()
# param_4 = obj.empty()
队列是先进先出,栈是先进后出,所以只要pop的时候取出队列里的最后一个元素即可,并判断此时队列是否为空。
27.移除元素
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
while val in nums:
nums.remove(val)
return len(nums)
循环判断val是否在列表里,存在就删除,返回列表长度。
933.最近的请求次数
class RecentCounter:
def __init__(self):
self.list = []
def ping(self, t: int) -> int:
self.list.append(t)
while len(self.list) != 0:
if self.list[0] + 3000 < t:
self.list.pop(0)
else:
break
return len(self.list)
# Your RecentCounter object will be instantiated and called as such:
# obj = RecentCounter()
# param_1 = obj.ping(t)
利用队列先进先出的特点,移除当次 ping 操作不在允许范围内的时间点,剩下的队列内保存的都是允许范围内的时间点,最后返回队列的长度,即为当前时间点 t 所有允许范围内的 ping 操作次数。