復(fù)盤|第321場周賽
找出中樞整數(shù)
【公式】等差數(shù)列求和公式1-x 是 x(x + 1)//2,x-n是(n(n + 1) - x(x - 1)) // 2,兩式相等.
追加字符以獲得子序列
【雙指針+貪心】貪心思想,雙指針遍歷s和t,t[j]應(yīng)匹配i盡量?。ǖ笥谏弦粋€的匹配的位置)的s[i]。
從鏈表中移除節(jié)點(diǎn)
【遞歸】遞歸本質(zhì)就是在倒著遍歷鏈表。定義遞歸函數(shù)返回的頭節(jié)點(diǎn)是最大值,比較當(dāng)前head和處理完的head.next,如果后面大,就保留后面。如果前面大那無事發(fā)生,把head接到后面的部分上。
統(tǒng)計中位數(shù)為 K 的子數(shù)組
【前綴和思想】先推導(dǎo),奇數(shù)長度時(偶數(shù)長度時加一),小于k的個數(shù)(+1)=大于k的個數(shù) 等價轉(zhuǎn)換 左側(cè)小于k的個數(shù) + 右側(cè)小于k的個數(shù)(+1) = 左側(cè)大于k的個數(shù) + 右側(cè)小于k的個數(shù),移項(xiàng),左側(cè)小于k的個數(shù) - 左側(cè)大于k的個數(shù)(+1) = 右側(cè)大于k的個數(shù) - 右側(cè)小于k的個數(shù)。小于k的數(shù)看成-1,大于k的數(shù)看成1,k看成0。設(shè)k的下標(biāo)為pos,k為子數(shù)組的中位數(shù),等價于:1.子數(shù)組包含下標(biāo)pos;2.子數(shù)組的元素和等于0或1。統(tǒng)計子數(shù)組nums[pos:i]中比k大的數(shù)的個數(shù),減去比k小的數(shù)的個數(shù),記作c_i。用哈希表cnt統(tǒng)計c_i的個數(shù)。然后對于子數(shù)組nums[i:pos],統(tǒng)計比k小的數(shù)的個數(shù),減去比k大的數(shù)的個數(shù),記作c。對于每個i:[cnt_ci]]就是符合條件的奇數(shù)長度子數(shù)組的個數(shù);cnt[c_i + 1]就是符合條件的偶數(shù)長度子數(shù)組的個數(shù)。累加個數(shù),即為答案。代碼中cnt[0] = 1是存了k。