[閒聊] LeetCode Biweekly Contest 101

作者: fxfxxxfxx (愛麗絲)   2023-04-02 00:00:19
這次還行
https://i.imgur.com/EryuGTN.png
感覺最後一題網路上應該一堆答案
不過我寫的卡卡的浪費很多時間
不然我前三題的狀況還不錯
1. Form Smallest Number From Two Digit Arrays
兩層 for 迴圈,如果數字一樣可以只有一個數
取最小的
2. Find the Substring With Maximum Cost
變形的 maximum subarray
其實就只需要維護字母對應到值的表
再把 s 都轉成對應的值再直接套 max subarray 就可以了
3. Make K-Subarray Sums Equal
看了一下解出來的人數,大家好像認為這題比第四題難
我自己是覺得比一般的第三題難
至少感覺需要兩種第三題等級的技巧同時用在這一題上
所有長度 k 的 subarray 的和都一樣,
所以對任意的 i,我們有
arr[i] + ... + arr[i+k-1] == arr[i+1] + ... + arr[i+k]
消一消之後就能得到 arr[i] == arr[i+k]
因為是環形的,所以會被切成 gcd(arr.size(), k) 個 subsequence
令 g = gcd(arr.size(), k)
對任意 0 <= i < g, 我們有
arr[i] = arr[i + g] = arr[i + 2g] = ...
而讓 arr[i], arr[i+g], arr[i+2g], ... 全部一樣的最小 cost
就是取他們的中位數
4. Shortest Cycle in a Graph
看題目就感覺是經典題
我自己也覺得好像很久以前有做過的樣子
不過實際寫起來就一直卡卡的
最後我的作法是對每個節點 v 做 bfs
如果有某個走過的點想要走到另一個走過的點
就計算他們的 cycle 的長度
因為是 bfs 所以這會是這兩個點經過 v 的最短 cycle 了
不過要處理像是不能朝原路走回去之類的細節
後來是覺得如果改成每次拔掉一個邊 (u, v) 後
再用 bfs 算 u
作者: Firstshadow (IamCatづミ'_'ミづ)   2023-04-02 00:02:00
大師
作者: dustsstar79 (穆)   2023-04-02 00:02:00
大師最後一題夠廢==模板題
作者: pandix (麵包屌)   2023-04-02 00:04:00
大師
作者: Che31128 (justjoke)   2023-04-02 00:13:00
大師
作者: NTHUlagka (拉卡)   2023-04-02 00:21:00
大師
作者: JIWP (JIWP)   2023-04-02 01:00:00
大師

Links booklink

Contact Us: admin [ a t ] ucptt.com