復(fù)盤|第314場(chǎng)周賽
6200. 處理用時(shí)最長(zhǎng)的那個(gè)任務(wù)的員工?https://leetcode.cn/problems/the-employee-that-worked-on-the-longest-task/
【模擬】題意是要找用時(shí)最長(zhǎng)的最小的idx,那么可以用兩個(gè)變量分別記錄最長(zhǎng)time和最小idx,碰到更大的time或一樣大的time但是更小的idx便可以更新max_time和min_idx。
6201. 找出前綴異或的原始數(shù)組?https://leetcode.cn/problems/find-the-original-array-of-prefix-xor/
【位運(yùn)算】前綴異或和還原回原數(shù)組,直接兩兩異或即可,可以原地修改省空間。(小技巧:內(nèi)置函數(shù)xor比^快一點(diǎn)點(diǎn))
6202. 使用機(jī)器人打印字典序最小的字符串?https://leetcode.cn/problems/using-a-robot-to-print-the-lexicographically-smallest-string/
題意是允許使用一個(gè)棧,求出棧的字符序列中字典序最小的那個(gè)。打印順序是abcdefg…,所以必然要先把所有a打印,再去依次打印b、c.. ?注意在找到最后一個(gè)a之前的所有字符都是逆序打印的。
【棧 + 模擬】按題意模擬棧的進(jìn)出,st[-1]為最小才能出棧。用cnt記錄s中字符數(shù)量,入棧一個(gè)字符,數(shù)量減一。
【棧 + 貪心】可以用長(zhǎng)度為26的數(shù)組記錄每種字符的數(shù)目。
6203. 矩陣中和能被 K 整除的路徑?https://leetcode.cn/problems/paths-in-matrix-whose-sum-is-divisible-by-k/
【記憶化搜素】定義dfs(i,j,v)為從(i,j)出發(fā),當(dāng)前路徑和%k =v時(shí)的路徑數(shù)量。注意需加cache和cache_clear不然會(huì)爆內(nèi)存,最后int(ans)是防止值很小時(shí)返回bool值。
【DP】定義dp[i] [j] [v]為從(0,0)走到(i,j)且路徑和%k=v的路徑數(shù),初始值dp[0] [0] [grid[0] [0] mod k] = 1,ans = dp[m - 1] [n - 1] [0],轉(zhuǎn)移方程(刷表法): dp[i] [j] [(v + grid[i] [j]) mode k] = dp[i] [j - 1] [v] + dp[i - 1] [j] [v]。(為了避免判斷是否越界可以把下標(biāo)整體加一,i → i + 1,j → j + 1)