復盤|第359場周賽
判別首字母縮略詞
【模擬】需要滿足兩個條件:words長度和s長度相等;所有words[i] [0] == s[i]。
k-avoiding 數(shù)組的最小總和
【數(shù)學】對于每個數(shù)i,數(shù)對(i, k - i)里只能選小的那個。可以發(fā)現(xiàn)答案數(shù)組分為前后兩段,第一段是[1: min(?k / 2?, n)],第二段從k開始往后選,還需n - m個數(shù),是[k : k + n - m - 1],分別用等差數(shù)列求和公式求和再相加。
銷售利潤最大化
【線性DP】定義f[i] 為前i座房子的最大收益,轉移方程為f[i] = max(f[i - 1], f[start_j - 1] + gold_j for start_j, gold_j in g if end_j == i),提前把所有end相同數(shù)據(jù)用哈希表歸類。(為避免負數(shù),i改成i + 1)
找出最長等值子數(shù)組
【分組 + 雙指針】把相同元素的下標記錄到哈希表或數(shù)組pos中,遍歷pos中每個下標列表ps,用雙指針處理,如果等值子數(shù)組的元素下標是從ps[l]到ps[r],該子數(shù)組需要刪除的元素是ps[r] - ps[l] + 1 - (r - l + 1),需刪除的元素如果>k則需要移動做指針。進一步優(yōu)化:再哈希表或數(shù)組中直接記錄ps[i] - i,這樣刪除元素數(shù)量 就是ps[r] - ps[l]。