前往
大廳
主題

【LeetCode】108th LeetCode Biweekly Contest 心得

懶洋洋的豪豬 | 2023-07-09 00:54:41 | 巴幣 1002 | 人氣 542

【前言】

剛剛打完比賽突破以往的上限了,很開心所以就想來發文~
介紹一下LeetCode比賽機制,每週都有一場比賽,每兩週會多一場雙週賽,也就是這次參加的比賽,每場比賽時長90分鐘,要完成4題,題目由簡單到難排序,解題後得取得的分數也不太一樣(依難度有所不同),比賽結束後優先依照分數排名,同分照完成時間排名,正式繳交時出錯的話會罰時5分鐘,結束後會對選手的Contest Rating做增減,機制我不太了解,有看到一篇文章說Rating是根據與你名次差不多的其他用戶的Rating來決定增減分的。

【主文】

這是我第四次參加LeetCode上的比賽,上週才發現比賽的題目在比賽結束後會加到題庫裡,加上Rating排名讓我感覺像在打積分很不錯,所以這次也報名了,前三次參加的成績都是(2/4題),第三次還掉分了,這次本來想拚一波把分數題上去,但比賽剛開始我就因為同時連開四題的分頁被網站阻擋存取,導致前30分鐘五都讀不了題目......
當時心情真的很糟,可以讀題後伴隨著多多少少的罰時與debug完成了前兩題,完成第二題後我是松一口氣的,我對自己的要求是至少解兩題,後面第三題經過嘗試最後也順利解出來了,最後剩下12分鐘拚第四題,最後敗在時間與空間超過限制的修改地獄。
我感覺如果沒有被拖到時間就能解出最後一題了......當然這都是後話了,至少之後的比賽我會注意不要再多開分頁。

【關於題目】
比賽網頁
簡單敘述一下我的解法,可能不是最佳,歡迎各位指教。
1.Longest Alternating Subarray
題目內容:找數字前後關係連續為[n,n+1,n,n+1]的子陣列

我用陣列存目前的連續長度並更新變數ans,後來發現好像不需要用陣列存也能過,但當時很緊張就沒多想。

2.Relocate Marbles
題目內容:照題目要求移動某袋子的所有彈珠到另一個袋子,回傳移動結束後擁有彈珠的袋子數量。

用map依照題目要求操作就過了,只是一開始沒意識到移動到同個袋子的情況所以被罰時了。

3.Partition String Into Minimum Beautiful Substrings
題目內容:判斷題目給的字串(由0和1組成)能否分割成數個1開頭且為5的次方的二進位數字,如果能則回傳最小分割數。

這題我透過遍歷所有子字串+動態規劃解,因為之前有解過類似的題目(字串分割+條件判斷),所以對我來說解得很順手,不過誤解題目意思以為是5的倍數導致花了一點時間。

4.Number of Black Blocks
題目:給一個二維陣列並指定黑格子的位置,返回以2x2窗格掃陣列後得到雙格中黑格子為[0,1,2,3,4]的數量。

這題我覺得真的很可惜,看到題目當下我想到可以用前綴和來解,範例測資也過了,但最後比賽結束才發現可以優化時間與空間複雜度,沒想錯的話空間與時間都可以再少一半,但時間真的來不及,最後再處理超時問題時比賽贏來了結束......

更新:後來看其他人的解法是用map解qq

【結語】

LeetCode是在高三升大學的暑假開始刷的,當時因為申請的科技大學書審成績都給我很低分,就賭氣開始刷了xd,到現在也剛破800題,雖然有些題目當初沒很認真理解就照別人答案寫一遍繳交了,但總體而言刷題對我的幫助還是挺大的,尤其是經過這次的比賽,能感受到一小部分的積累已經內化成自己的工具/武器了,這次能突破三題時真的很開心,但也為沒能把握住這次的第四題感到可惜(相比先前的第四題我覺得算簡單了),總之希望我能繼續堅持下去。

更新:隔天的單週賽四題全解了,還好沒有hard難度的題目,不然我應該會卡住

有錯誤請務必糾正!

創作回應

阿冰
好電
2023-07-10 03:29:52
懶洋洋的豪豬
還有很多進步空間qwq
2023-07-10 04:13:22

相關創作

更多創作