最近有點懶,哈哈,刷題挺慢的,今天用python3 練練手了,
題目如下:
設計你的迴圈佇列實現。 迴圈佇列是一種線性資料結構,其操作表現基於 fifo(先進先出)原則並且隊尾被連線在隊首之後以形成乙個迴圈。它也被稱為「環形緩衝器」。
迴圈佇列的乙個好處是我們可以利用這個佇列之前用過的空間。在乙個普通佇列裡,一旦乙個佇列滿了,我們就不能插入下乙個元素,即使在佇列前面仍有空間。但是使用迴圈佇列,我們能使用這些空間去儲存新的值。
你的實現應該支援如下操作:
mycircularqueue(k): 構造器,設定佇列長度為 k 。
front: 從隊首獲取元素。如果隊列為空,返回 -1 。
rear: 獲取隊尾元素。如果隊列為空,返回 -1 。
enqueue(value): 向迴圈佇列插入乙個元素。如果成功插入則返回真。
dequeue(): 從迴圈佇列中刪除乙個元素。如果成功刪除則返回真。
isempty(): 檢查迴圈佇列是否為空。
isfull(): 檢查迴圈佇列是否已滿。
示例:mycircularqueue circularqueue = new mycircularqueue(3); // 設定長度為 3
circularqueue.enqueue(1); // 返回 true
circularqueue.enqueue(2); // 返回 true
circularqueue.enqueue(3); // 返回 true
circularqueue.enqueue(4); // 返回 false,佇列已滿
circularqueue.rear(); // 返回 3
circularqueue.isfull(); // 返回 true
circularqueue.dequeue(); // 返回 true
circularqueue.enqueue(4); // 返回 true
circularqueue.rear(); // 返回 4
所有的值都在 0 至 1000 的範圍內;
運算元將在 1 至 1000 的範圍內;
請不要使用內建的佇列庫。
題解:
class mycircularqueue:
def __init__(self, k: int):
"""initialize your data structure here. set the size of the queue to be k.
"""self.length = k + 1
self.list = [none]*(k+1)
self.front = 0
self.rear = 0
def enqueue(self, value: int) -> bool:
"""insert an element into the circular queue. return true if the operation is successful.
"""if(self.isfull()):
return false
self.list[self.rear] = value
self.rear += 1
self.rear %= self.length
return true
def dequeue(self) -> bool:
"""delete an element from the circular queue. return true if the operation is successful.
"""if( self.isempty() ):
return false
self.front += 1
self.rear %= self.length
return true
def front(self) -> int:
"""get the front item from the queue.
"""if( self.isempty() ):
return -1
return self.list[self.front]
def rear(self) -> int:
"""get the last item from the queue.
"""if( self.isempty() ):
return -1
return self.list[(self.rear-1)%(self.length)]
def isempty(self) -> bool:
"""checks whether the circular queue is empty or not.
"""return self.rear == self.front
def isfull(self) -> bool:
"""checks whether the circular queue is full or not.
"""return (self.front - self.rear) % (self.length) == 1
結果:
52 / 52 個通過測試用例
狀態:通過
執行用時:108 ms
嗯。。。是有點慢的.
力扣刷題日記(5)
給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。最高位數字存放在陣列的首位,陣列中每個元素只儲存乙個數字。你可以假設除了整數 0 之外,這個整數不會以零開頭。示例 1 輸入 1,2,3 輸出 1,2,4 解釋 輸入陣列表示數字 123。示例 2 輸入 4,3,2,1 輸出 4,3,...
力扣刷題日記10 29
我變禿了 也變強了 1.刪除排序陣列中的重複項 給定乙個排序陣列,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新...
力扣LeetCode刷題日記(一)
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...