復(fù)盤|第90場(chǎng)雙周賽
6225. 差值數(shù)組不同的字符串
【哈希表】把difference數(shù)組當(dāng)作哈希表的key,把word當(dāng)作哈希表的value,僅出現(xiàn)一次的差值數(shù)組的values就是ans。(出現(xiàn)一次的和出現(xiàn)不止一次的自然而然分成了兩組)
6228. 距離字典兩次編輯以內(nèi)的單詞
【枚舉】按題意暴力枚舉即可。
6226. 摧毀一系列目標(biāo)
【貪心】% space相同的數(shù)可以被這些數(shù)中最小的數(shù)所摧毀。分組,key = num % space,value = num,組的大小最大(相同余數(shù)的最多→能夠摧毀數(shù)量最多),且組內(nèi)最小值是所有組最小值中最小的。
【哈希表統(tǒng)計(jì)】同理% space余數(shù)相同的數(shù)能被對(duì)應(yīng)的最小nums[i]摧毀,枚舉摧毀num最多的nums[i]最小值即可。
還可以寫更短點(diǎn),找cnt[num % space]最大的同時(shí)num最小,就是按(-cnt[num % space], num)找最小。
6227. 下一個(gè)更大元素 IV
【單調(diào)棧 + 堆】用一個(gè)棧維護(hù)右邊更大的元素,若棧頂元素小于nums[i],那么棧頂元素的下一個(gè)更大元素是nums[i];用第二個(gè)棧存被彈出棧頂?shù)脑亍?/p>
【一次遍歷 + 雙單調(diào)?!窟f減單調(diào)棧st1記錄元素,如果nums[i]比s棧頂打,nums[i]就是棧頂?shù)南聜€(gè)更大元素,彈出棧頂,并把nums[i]的下標(biāo)i入棧,彈出的元素加到另一個(gè)st2中,如果nums[j]比st2的棧頂2,那么nums[j]就是下下個(gè)更大元素。
【排序 + 有序集合】首先將數(shù)字從小到大排序,按照從小到大的順序遍歷分組,保證添加到有序集合中的元素都是比當(dāng)前數(shù)字更大的數(shù)字的下標(biāo),對(duì)每個(gè)分組的每個(gè)下標(biāo),從有序集合中找出右側(cè)第二個(gè)比它更大的下標(biāo)所對(duì)應(yīng)的數(shù)字。
更通用地,可以找右邊第k個(gè)比它大的數(shù)。代碼中,j就是第k大的下標(biāo)。