復(fù)盤|第291場周賽
移除指定數(shù)字得到的最大結(jié)果
【枚舉】遍歷nums尋找所有可移除的下標(biāo),用ans記錄能得到的最大結(jié)果,每當(dāng)找到nums[i] == digit的下標(biāo)i就移除。數(shù)值大小和字符串字典序大小保持一致,所以不用轉(zhuǎn)int。
【貪心】從左到右遍歷nums,如果nums[i] == digit and nums[i] < nums[i + 1]就刪除該字符,如果遍歷完成仍不滿足,就刪除digit出現(xiàn)的最后一個(gè)下標(biāo),這樣能保證刪除后的結(jié)果最大。
必須拿起的最小連續(xù)卡牌數(shù)
【貪心 + 哈希表】用d存每個(gè)元素最近一次的下標(biāo),每次更新最小距離。
含最多 K 個(gè)可整除元素的子數(shù)組
【枚舉 + 哈希集合去重】通過枚舉左右邊界來遍歷nums的所有子數(shù)組,并檢查它們是否至多包含k個(gè)可被p整除的元素,若cnt>k就可以停止枚舉這個(gè)左邊界情況下的右邊界了。用哈希集合來去重。
字符串的總引力
【DP】將所有字串按照其末尾字符下標(biāo)分組,考慮兩組相鄰的字串:以s[i - 1]結(jié)尾的字串、以s[i]結(jié)尾的字串,以s[i]結(jié)尾的字串,可以看作以s[i - 1]結(jié)尾的字串,在末尾加上s[i]。從左往右遍歷s,考慮將s[i]添加到以s[i - 1]結(jié)尾的字串的末尾,添加后,這些以s[i - 1]結(jié)尾的字串的引力增加值分類討論:s[i]之前沒遇到,這些字串引力值+1,字串引力值之和增加i,再加上1即s[i]單獨(dú)組成的字串的引力值。如果s[i]之前遇到過,設(shè)上次出現(xiàn)的下標(biāo)為j,字串s[j + 1, .. i + 1],s[j + 2..i - 1]...不包含s[i]的字串的引力值都+1,再加上1,即s[i]單獨(dú)組成的字串的引力值。