復(fù)盤|第107場雙周賽
最大字符串配對數(shù)目
【遍歷】O(n^2)遍歷,按題意遍歷。
【哈希表】題目保證words中字符串互不相同,可以遍歷words,遍歷的同時把words[i] [::-1]加入哈希表中,下次遍歷時判斷是否在哈希表中。
構(gòu)造最長的新字符串
【公式】AB不會改變AA和BB交替連接的上限。
【記憶化搜索】定義dfs(x,y,z,k),其中x,y,z為AA、BB、AB的剩余數(shù)量,k=0,1,2表示上一個字符是AA\BB\AB,此時可以構(gòu)造出字符串的最大長度,狀態(tài)轉(zhuǎn)移是:AA后面能接BB,BB后面能接AA或BB,AB后面能接AA或AB。
字符串連接刪減字母
【三維DP-記憶化搜索實現(xiàn)】定義dfs(i,j,k),i為當前處理字符串的下標,j和k表示第一個字符和最后一個字符,對于每個字符串有兩種連接方式:res1 = dfs(i + 1, j, w[-1]) - (w[0] == k)表示將當前字符串w連接到已連接字符串的后面,保持j不變,k更新為w的最后一個字符,然后刪除相同字符;res2 = dfs(i + 1, w[0], k) - (w[-1] == j)表示將已連接字符串連接到當前字符串w的后面,將j更新為w的第一個字符,保持k不變,然后刪除相同字符。
【三維DP-遞推實現(xiàn)】
統(tǒng)計沒有收到請求的服務(wù)器數(shù)目
【離線 + 滑動窗口】首先按照時間排序,方便后續(xù)滑動窗口處理時間區(qū)間內(nèi)的logs。然后遍歷排序后的queries,維護窗口內(nèi)服務(wù)器請求數(shù)量和未收到請求的服務(wù)器數(shù)目,當logs[r] [1] <= q時,說明時間在當前查詢的時間區(qū)間內(nèi),進入窗口,請求+1,如果是服務(wù)器的第一個請求,將未收到請求的服務(wù)器數(shù)目減一,更新右邊界;當Logs[l] [1] < q - x是,說明時間在當前查詢的時間區(qū)間之外,服務(wù)器的請求需要離開窗口,對應(yīng)服務(wù)器請求數(shù)量減一,如果服務(wù)器請求數(shù)量變成0,則將未收到請求的服務(wù)器數(shù)目加1,更新左邊界。