zoukankan      html  css  js  c++  java
  • Leetcode 循环队列

     1 class MyCircularQueue:
     2 
     3     def __init__(self, k: int):
     4         """
     5         Initialize your data structure here. Set the size of the queue to be k.
     6         """
     7         self.queue = [0]*(k+1)      #牺牲一个存储空间
     8         self.head = 0
     9         self.tail = 0
    10 
    11     def enQueue(self, value: int) -> bool:
    12         """
    13         Insert an element into the circular queue. Return true if the operation is successful.
    14         """
    15         if self.isFull():
    16             return False
    17         else:
    18             self.queue[self.tail] = value
    19             self.tail = (self.tail+1)%len(self.queue)
    20             return True
    21         
    22 
    23     def deQueue(self) -> bool:
    24         """
    25         Delete an element from the circular queue. Return true if the operation is successful.
    26         """
    27         if self.tail == self.head:
    28             return False
    29         else:
    30             self.head = (self.head+1)%len(self.queue)
    31             return True
    32         
    33 
    34     def Front(self) -> int:
    35         """
    36         Get the front item from the queue.
    37         """
    38         if not self.isEmpty():
    39             return self.queue[self.head]
    40         else:
    41             return -1       #因为只存储正数,且返回值为 int 我只能写 -1 了,如果有需要可以根据需要修改这里的返回值
    42         
    43 
    44     def Rear(self) -> int:
    45         """
    46         Get the last item from the queue.
    47         """
    48         if not self.isEmpty():
    49             return self.queue[(self.tail-1+len(self.queue))%len(self.queue)]
    50         else:
    51             return -1       #因为只存储正数,且返回值为 int 我只能写 -1 了,如果有需要可以根据需要修改这里的返回值
    52         
    53 
    54     def isEmpty(self) -> bool:
    55         """
    56         Checks whether the circular queue is empty or not.
    57         """
    58         return self.head == self.tail
    59         
    60 
    61     def isFull(self) -> bool:
    62         """
    63         Checks whether the circular queue is full or not.
    64         """
    65         return (self.tail+1)%len(self.queue) == self.head
    66         
  • 相关阅读:
    Longest Valid Parentheses
    Gas Station
    Multiply Strings
    LeetCode:Merge Sorted Array
    LeetCode:Single Number II
    LeetCode: Single Number
    LeetCode:3Sum
    LeetCode:Binary Tree Preorder Traversal
    LeetCode: Best Time to Buy and Sell Stock III
    LeetCode: Best Time to Buy and Sell Stock II
  • 原文地址:https://www.cnblogs.com/Halo-zyh-Go/p/12495988.html
Copyright © 2011-2022 走看看