復(fù)盤|第284場周賽
找出數(shù)組中的所有 K 近鄰下標(biāo)
【枚舉】枚舉所有下標(biāo)對,判斷是否滿足條件。res維護(hù)所有k緊鄰下標(biāo),先遞增順序枚舉i,在枚舉j,i被添加過就break防止重復(fù)添加。
【一次遍歷】r表示當(dāng)前未被判斷過是否是k緊鄰下標(biāo)的最小下標(biāo),每次更新閉區(qū)間[max(0,j?k),min(n?1,j+k)] 內(nèi)的所有下標(biāo)。
統(tǒng)計(jì)可以提取的工件
【哈希表】每個(gè)工件最多覆蓋4個(gè)單元格,dig存哈希表,遍歷每個(gè)工件的覆蓋格子,但凡有格子沒被挖過則false,必須全被dig過才true。
K 次操作后最大化頂端元素
【分類討論】分類討論棧頂能否存最大值。n = len(nums),n=1,k奇數(shù)棧空,k偶數(shù)nums[0],i = 0,奇偶都能使得nums[0]為棧頂,0 < i < k - 1也可以, i = k - 1只能刪nums[i - 1],i =k 能刪前k個(gè), i > k則nums[i]前無法刪。
得到要求路徑的最小帶權(quán)子圖
【三次最短路】如果只有兩個(gè)點(diǎn)就是兩點(diǎn)間的最短路,三個(gè)點(diǎn)就是枚舉三條路最短路的交點(diǎn),邊權(quán)和最小的子圖呈現(xiàn)三岔口的「Y型」。枚舉三岔口焦點(diǎn)x,求src1和src2到x的最短路(兩次Dijkstra),以及x到dest的最短路(線所有邊反向,再dest到c,一次Dijkstra),累加三條最短路的和,即為三岔口在x處子圖的邊權(quán)和,枚舉所有x,最小子圖邊權(quán)和即為答案。