正整數陣列nums,找到滿足條件的最長字首,返回其長度。該字首滿足:刪除乙個元素後,剩下的每個數字出現的次數相同。
ps:如果刪除後沒有元素存在,也可以認為每個數字有相同的次數。
陣列長度:[2,105],元素值:[2,105]
在遍歷陣列的過程中,計算每個數字的頻率對映val2freq,再統計頻率的頻率。對於滿足條件的字首,此刻的『頻率的頻率』有以下幾種可能:
所有元素頻率相等,除了其中乙個元素多了乙個:freq2freq大小為2,且他們的key的差為1,大的那個值為1
乙個值出現一次,其他值出現一次:freq2freq大小為1,val為1。
乙個值出現一次,其他值出現相同次數(>1次):freq2freq大小為2,且其中乙個key為1且值為1.
乙個值出現一次,其他值出現0次:freq2freq大小為1,key為1且值為1.
遍歷過程中記錄滿足條件的字首出現時對應的最大i即可。
時間複雜度:o(n),空間複雜度o(n)用map來記錄頻率。
public int maxequalfreq(int nums)
//a(frq2ffrq.keyset()).get(0);
if(key==1||frq2ffrq.get(key)==1) }}
return res+1;
}private int addmap(mapval2freq, int key, int val) else
if(val==0)
return val;
}
LeetCode 最大矩形
q 給出乙個只包含0和1的二維矩陣,找出最大的全部元素都是1的長方形區域,返回該區域的面積。a 這個題感覺蠻巧妙的。如果這個點為 1 先計算當前行的最大寬度,這說明最大寬度左邊的都是保證可以是矩形的。然後往上看,用最小的寬度和當前的高度計算最大的矩形。看圖 同理,高度也可以這麼做。另一種就是參考計算...
9715 相鄰最大矩形面積
description 在x軸上水平放置著 n 個條形圖,這 n 個條形圖就組成了乙個柱狀圖,每個條形圖都是乙個矩形,每個 矩形都有相同的寬度,均為1單位長度,但是它們的高度並不相同。例如下圖,圖1包含的矩形的高分別為2,1,4,5,1,3,3 單位長度,矩形的寬為1單位長度。你的任務就是計算柱狀圖...
Leetcode 506相對名次
給出n名運動員的成績,找出他們的相對名次並授予前三名對應的獎牌。前三名運動員將會被分別授予 金牌 銀牌 和 銅牌 gold medal silver medal bronze medal 注 分數越高的選手,排名越靠前。示例 1 輸入 5,4,3,2,1 輸出 gold medal silver m...