Leetcode Contest(持續更新)
此放了我打Leetcode contest的心得以及解答的東西,藉此讓自己每天參加。
Weekly Contest 246(110/6/20)
1903 超級水題,可用substr的string函式,題解。
1904 無演算法題,但是有點難寫(對我說),結果其實只要三行,有夠輕鬆== ,遇到這種24小時的題目好像都要把hour全部轉成minute,CPE好像也有看過。
1905 普通DFS題,有人題解寫得有夠短,好會用bit運算= = ,並且不是用record紀錄是否有走做,是直接把圖變成0。
1906 題解,有Prefix Sums and Binary Search的解法。
Weekly Contest 245(110/6/13)
1897 簡單題,只是count,題解中最好就這個,有用到新函式all_of。
1898 對於removable,因為假如你對前k個移除後有子序列,那麼前k-1個一定可以有子序列(更少),所以有二分性,用Binary Search,然後判斷當前k個是否能形成子序列,就用貪心就好了(兩個pointer),一個一個找,對岸題解講得很清楚。我還嘗試用什麼multimap處理,把題目變得更難了= = 。
1899 比第二題簡單,就看最大值就好了。哭阿,又是它,寫的code有夠少呢->Greedy。
1900 第一名的題解好簡潔,頭好痛,下面留言有一些解釋,這個題解倒是比較看得懂,簡單來說就是暴力破解,把所有情況弄出來,虧我還以為是DP,一直想。
Weekly Contest 243(110/5/30)
1880 簡單題,看題解發現新世界,發現了stoi這個函式,因此可以把code寫的超級短的,還有人用stoi函式加上lambda,寫得更短了。
1881 簡單題,用string.insert跟to_string函式就好了,另外一個題解也不錯。寫的超短。
1882 有點難題,題解大多說用兩個heap(這因該是Java的,java好像直接打heap?,C++則是priority_queue,因C++的priority_queue是用最大或最小堆積(heap)實作的),所以這是用兩個priority_queue處理的,可以非常輕鬆地解決這一題。他還用到C++的轉型函式,第一次看到。留言有強調priority_queue中的vecotr<pair<int,int>>中可以用pair,比較不會TLE。然後這個人用了更少的code,也是用兩個priority_queue。
1883 超級難題,DP,時間(n*n),好像因為限制n最大1000,所以n平方還可以接受,也好像只有n平方解了,空間最少可以(n),英文版的我看不懂,對岸力扣的題解寫的超好,還要注意浮點數的誤差,題解裡都有寫。
Weekly Contest 242(110/5/23)
1869 簡單題,但是我的code真的寫太多了,可以看看別人的,寫的超級精簡。
1870 完全完全沒想要用Binary Search,只想到用線性解,好爛阿我,明明就是經典Binary Search。
1871 : 1. 官方是推薦用前綴和,滿特別的。2.用Sliding Window演算法,滿好懂得,而且第一次聽過這東西,可以學習一下,第一次看到感覺像Two pointers 演算法,但其實不同。3. 用BFS,最難的想法。
1872 中文題解,英文題解(有Bottom-up and Top-down),簡單說就是前綴和的DP,好難QQ。
偷偷講個心得 : 不得不說英文的題解真的有夠難看懂= =,害我都只能去對岸力扣看題解,對岸的資源還是滿多的,可以看看,但還是建議看英文,練習英文的能力,而且英文的因該也比較厲害(?)。
Weekly Contest 241(110/5/16)
1863 考給你一串數字,得出所有可能的取出組合,可以用bit(比較好)或是遞迴,題解有很簡單的bit code。而也有人提出別的觀察,可以看看,只是我看不懂QQ。
1864 有解出來,我算是用直接暴力看一遍,先看1夠不夠放完整個東西,再看奇數位置跟偶數位置那個比較多1,之後計算,結果code有點寫太多了。
發現大家好像想法都差不多,這時藉由看別人程式碼來學習。Ex 找所有的0可以用count函式。
1865 沒弄出來,算是挺簡單的一題,用unordered_map,unordered_map是用hash table實作,搜尋O(1),map是用紅黑樹,搜尋O(log n),各有好處,這邊用前者較好,用map會TLE。
1866 嘗試用next_permutation做,果然TLE。結果是DP,超級好的DP,從右到左填數字,用遞迴,真好的題目。
Weekly Contest 239(110/5/4)
1848 簡單題,無演算法。
1849 暴力枚舉,用遞迴,有想到用暴力處理(遞迴),但沒寫出程式碼,我好爛QQ,O(n2)。
1850 用next_premutation,完全沒想到可以用這函式,不然原本還想要用手刻,然後計算交換次數要從字串最前面看到最後面,討論有人有寫。
1851 用priority_queue + map(O(nlogn + qlogq)),就是用priority_queue從區間最小到最大,看那個區間有沒有包誇我們的search。或者用set放入區間,因為set也有自動排去其健值小到大的部分。