復(fù)盤|第302場(chǎng)周賽
數(shù)組能形成多少數(shù)對(duì)
【哈希表】統(tǒng)計(jì)每個(gè)元素的出現(xiàn)次數(shù),兩兩一對(duì),得到對(duì)數(shù)。用ums長(zhǎng)度減去對(duì)數(shù)的兩倍就得到剩余數(shù)字的個(gè)數(shù)。
數(shù)位和相等數(shù)對(duì)的最大和
【堆】heap維護(hù)前兩個(gè)最大的元素。
【哈希表 + 一次遍歷】手動(dòng)維護(hù)最大兩個(gè)值。
裁剪數(shù)字后查詢第 K 小的數(shù)字
【直接排序】對(duì)每個(gè)詢問(wèn),按照題目要求排序,取第 k小的元素的下標(biāo)。
【離線 + 增量排序】采用增量排序,每次排序只需要比較單個(gè)字符。先將詢問(wèn)按照trim從小到大排序,并按照這一順序回答詢問(wèn)。隨著trim的不斷增加,我們可以在排好序的字符串?dāng)?shù)組的基礎(chǔ)上,向每個(gè)字符串的前面添加一個(gè)對(duì)應(yīng)的字符,由于字符串?dāng)?shù)組已經(jīng)是有序的,我們只需要比較這個(gè)新增的字符的大小,即可比較整個(gè)字符串的大小。
使數(shù)組可以被整除的最少刪除次數(shù)
【排序】元素x若能整除numsDivide的所有元素,等價(jià)于x是所有numsDivide[i]的因子,這也等價(jià)于x是nums Divide所有元素的最大公因數(shù)g的因子。由于要求用nums的最小元素去整除g,不妨將nums排序后,從小到大找到第一個(gè)能整除g的元素x,所有小于x的元素都需要?jiǎng)h除。
【遍歷】不用排序,通過(guò)兩次遍歷得到答案,第一次遍歷nums找出能整除最大公約數(shù)的最小nums元素a 第二次遍歷nums找出nums中小于a的元素?cái)?shù)量。