ETH官方钱包

前往
大廳
主題

【LeetCode】108th LeetCode Biweekly Contest 心得

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

【前言】

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

【主文】

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

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

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

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

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

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

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

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

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

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

【結(jié)語】

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

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

有錯誤請務(wù)必糾正!

創(chuàng)作回應(yīng)

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

更多創(chuàng)作