LeetCode 第 208 場周賽

2021-10-09 22:57:26 字數 3858 閱讀 3599

都是暴力題沒啥好說,主要是想吐槽一下題面xd

資料夾操作日誌蒐集器

每當使用者執行變更資料夾操作時,leetcode 檔案系統都會儲存一條日誌記錄。

下面給出對變更操作的說明:

「…/」 :移動到當前資料夾的父資料夾。如果已經在主資料夾下,則 繼續停留在當前資料夾 。

「./」 :繼續停留在當前資料夾。

「x/」 :移動到名為 x 的子資料夾中。題目資料 保證總是存在資料夾 x 。

給你乙個字串列表 logs ,其中 logs[i] 是使用者在 ith 步執行的操作。

檔案系統啟動時位於主資料夾,然後執行 logs 中的操作。

執行完所有變更資料夾操作後,請你找出 返回主資料夾所需的最小步數 。

class

solution

else

if(logs[i]

=="./"

)else

}return now;}}

;

經營摩天輪的最大利潤

你正在經營一座摩天輪,該摩天輪共有 4 個座艙 ,每個座艙 最多可以容納 4 位遊客 。你可以 逆時針 輪轉座艙,但每次輪轉都需要支付一定的執行成本 runningcost 。摩天輪每次輪轉都恰好轉動 1 / 4 周。

給你乙個長度為 n 的陣列 customers , customers[i] 是在第 i 次輪轉(下標從 0 開始)之前到達的新遊客的數量。這也意味著你必須在新遊客到來前輪轉 i 次。每位遊客在登上離地面最近的座艙前都會支付登艙成本 boardingcost ,一旦該座艙再次抵達地面,他們就會離開座艙結束遊玩。

你可以隨時停下摩天輪,即便是 在服務所有遊客之前 。如果你決定停止運營摩天輪,為了保證所有遊客安全著陸,將免費進行所有後續輪轉 。注意,如果有超過 4 位遊客在等摩天輪,那麼只有 4 位遊客可以登上摩天輪,其餘的需要等待 下一次輪轉 。

返回最大化利潤所需執行的 最小輪轉次數 。 如果不存在利潤為正的方案,則返回 -1 。

class

solution

}int tim = que /4;

if(4* boardingcost - runningcost >0)

}if(mx <=0)

return-1

;return ans;}}

;

皇位繼承順序

乙個王國裡住著國王、他的孩子們、他的孫子們等等。每乙個時間點,這個家庭裡有人出生也有人死亡。

這個王國有乙個明確規定的皇位繼承順序,第一繼承人總是國王自己。我們定義遞迴函式 successor(x, curorder) ,給定乙個人 x 和當前的繼承順序,該函式返回 x 的下一繼承人。

successor(x, curorder):

如果 x 沒有孩子或者所有 x 的孩子都在 curorder 中:

如果 x 是國王,那麼返回 null

否則,返回 successor(x 的父親, curorder)

否則,返回 x 不在 curorder 中最年長的孩子

比方說,假設王國由國王,他的孩子 alice 和 bob (alice 比 bob 年長)和 alice 的孩子 jack 組成。

一開始, curorder 為 [「king」].

呼叫 successor(king, curorder) ,返回 alice ,所以我們將 alice 放入 curorder 中,得到 [「king」, 「alice」] 。

呼叫 successor(alice, curorder) ,返回 jack ,所以我們將 jack 放入 curorder 中,得到 [「king」, 「alice」, 「jack」] 。

呼叫 successor(jack, curorder) ,返回 bob ,所以我們將 bob 放入 curorder 中,得到 [「king」, 「alice」, 「jack」, 「bob」] 。

呼叫 successor(bob, curorder) ,返回 null 。最終得到繼承順序為 [「king」, 「alice」, 「jack」, 「bob」] 。

通過以上的函式,我們總是能得到乙個唯一的繼承順序。

請你實現 throneinheritance 類:

throneinheritance(string kingname) 初始化乙個 throneinheritance 類的物件。國王的名字作為建構函式的引數傳入。

void birth(string parentname, string childname) 表示 parentname 新擁有了乙個名為 childname 的孩子。

void death(string name) 表示名為 name 的人死亡。乙個人的死亡不會影響 successor 函式,也不會影響當前的繼承順序。你可以只將這個人標記為死亡狀態。

string getinheritanceorder() 返回 除去 死亡人員的當前繼承順序列表。

class

throneinheritance

void

birth

(string parentname, string childname)if(

!mp.

count

(childname)

)int t1 = mp[parentname]

,t2 = mp[childname]

; g[t1]

.push_back

(childname);}

void

death

(string name)

void

successor

(int x,vector

&ans)

} vector

getinheritanceorder()

};/** * your throneinheritance object will be instantiated and called as such:

* throneinheritance* obj = new throneinheritance(kingname);

* obj->birth(parentname,childname);

* obj->death(name);

* vectorparam_3 = obj->getinheritanceorder();

*/

最多可達成的換樓請求數目

我們有 n 棟樓,編號從 0 到 n - 1 。每棟樓有若干員工。由於現在是換樓的季節,部分員工想要換一棟樓居住。

給你乙個陣列 requests ,其中 requests[i] = [fromi, toi] ,表示乙個員工請求從編號為 fromi 的樓搬到編號為 toi 的樓。

一開始 所有樓都是滿的,所以從請求列表中選出的若干個請求是可行的需要滿足 每棟樓員工淨變化為 0 。意思是每棟樓 離開 的員工數目 等於 該樓 搬入 的員工數數目。比方說 n = 3 且兩個員工要離開樓 0 ,乙個員工要離開樓 1 ,乙個員工要離開樓 2 ,如果該請求列表可行,應該要有兩個員工搬入樓 0 ,乙個員工搬入樓 1 ,乙個員工搬入樓 2 。

請你從原請求列表中選出若干個請求,使得它們是乙個可行的請求列表,並返回所有可行列表中最大請求數目。

class

solution

return res;

}int

maximumrequests

(int n, vectorint>>

& requests)

}int flag =1;

for(

int i =

0;i < n;i++)}

if(flag) ans =

max(ans,num);}

return ans;}}

;

力扣 第 208 場周賽

今晚剩乙個小時左右了emmmm能寫多少寫多少哈,並且小白做題慢,還要參考大佬的題解優化emmmmm肯定做不完吶吶吶 我才不會說是因為我不會做呢 那,就開始咯 模擬一下棧的思路,還行吧 就是,一開始想多了,想匹配所有字元emmmm關鍵 還涉及轉製 俺還寫了測試主函式emmmm 讀題讀了半天,幸虧不是英...

leetcode 第132場周賽

愛麗絲和鮑勃一起玩遊戲,他們輪流行動。愛麗絲先手開局。最初,黑板上有乙個數字n。在每個玩家的回合,玩家需要執行以下操作 如果玩家無法執行這些操作,就會輸掉遊戲。只有在愛麗絲在遊戲中取得勝利時才返回true,否則返回false。假設兩個玩家都以最佳狀態參與遊戲。示例 1 輸入 2輸出 true解釋 愛...

leetcode周賽 第176場

題目描述 給你乙個 m n 的矩陣 grid,矩陣中的元素無論是按行還是按列,都以非遞增順序排列。請你統計並返回 grid 中 負數 的數目。示例 1 輸入 grid 4,3,2,1 3,2,1,1 1,1,1,2 1,1,2,3 輸出 8 解釋 矩陣中共有 8 個負數。示例 2 輸入 grid 3...