復(fù)盤|第285場周賽
統(tǒng)計(jì)數(shù)組中峰和谷的數(shù)量
【兩次遍歷】先對nums手動(dòng)去重,然后遍歷 滿足波峰和波谷條件的 nums[i]個(gè)數(shù)。
【一次遍歷】找到每個(gè)連續(xù)段的首尾,然后按照題目要求比較大?。▋蓚?cè)均小或者兩側(cè)均大),注意 i 和外層循環(huán)的 i 是同一個(gè)變量,因此時(shí)間復(fù)雜度為 O(n)。
統(tǒng)計(jì)道路上的碰撞次數(shù)
【思維題】去掉往左右兩邊開的車之后,剩下非停止的車必然會(huì)碰撞。
射箭比賽中的最大得分
【二進(jìn)制枚舉】枚舉bob在哪些區(qū)域上獲勝,一共有2^12種不同的情況,bob每個(gè)區(qū)域比alice多用一支箭即可。n位二進(jìn)制整數(shù)mask表示所有區(qū)域的勝負(fù),第i是0表示bob輸,為1 是贏。如果穩(wěn)贏隨便找個(gè)地方射完剩下的箭。
由單個(gè)字符重復(fù)的最長子字符串
【線段樹】線段樹的每個(gè)節(jié)點(diǎn)維護(hù)對應(yīng)區(qū)間的:前綴最長連續(xù)字符個(gè)數(shù)pre,后綴最長連續(xù)字符個(gè)數(shù)suf,該區(qū)間最長連續(xù)字符個(gè)數(shù)max,合并兩個(gè)子區(qū)間時(shí),如果前一個(gè)區(qū)間(記作α)的末尾字符等于后一個(gè)區(qū)間(記作b)的第一個(gè)字符,則可以合并這兩個(gè)區(qū)間:如果a的suf等于a的長度,那么就可以把b的pre加到a的pre上,如果b的pre等于b的長度,那么就可以把a(bǔ)的su時(shí)加到b的suf上,a.suf+b.pre可以考慮成為合并后的區(qū)間的max。