力扣刷題日記(3)

2021-09-25 14:29:27 字數 2609 閱讀 1461

最近有點懶,哈哈,刷題挺慢的,今天用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 ...