2020-04-02 12:15:05
問題描述:
給出乙個正整數陣列 nums,請你幫忙從該陣列中找出能滿足下面要求的最長字首,並返回其長度:
從字首中刪除乙個元素後,使得所剩下的每個數字的出現次數相同。
如果刪除這個元素後沒有剩餘元素存在,仍可認為每個數字都具有相同的出現次數(也就是 0 次)。
示例 1:
輸入:nums = [2,2,1,1,5,3,3,5]輸出:7
解釋:對於長度為 7 的子陣列 [2,2,1,1,5,3,3],如果我們從中刪去 nums[4]=5,就可以得到 [2,2,1,1,3,3],裡面每個數字都出現了兩次。
示例 2:
輸入:nums = [1,1,1,2,2,2,3,3,3,4,4,4,5]輸出:13
2 <= nums.length <= 10^5
1 <= nums[i] <= 10^5
問題求解:
如果正序的來求解的話,需要討論的情況會非常多,直接導致最後求解非常麻煩;這個時候我們需要做的更多的是從另乙個角度來看待問題,往往會使問題解決變得更加簡單清晰。
對於本題而言,可以反向遍歷,如果當前滿足條件直接返回結果即可。
如何對每一位進行判斷呢?對於末尾某一位,我們可以選擇刪除或者保留,我們只需要針對這兩種方案進行判別即可。
時間複雜度:o(n)
int num2freq = new int[100001];int freq2num = new int[100001];
public int maxequalfreq(int nums)
for (int i = n - 1; i >= 1; i--)
return 1;
}
LeetCode1224 最大相等頻率 思維
給出乙個正整數陣列 nums,請你幫忙從該陣列中找出能滿足下面要求的 最長 字首,並返回其長度 從字首中 刪除乙個 元素後,使得所剩下的每個數字的出現次數相同。如果刪除這個元素後沒有剩餘元素存在,仍可認為每個數字都具有相同的出現次數 也就是 0 次 示例 1 輸入 nums 2,2,1,1,5,3,...
leetcode5225最大相等頻率
正整數陣列nums,找到滿足條件的最長字首,返回其長度。該字首滿足 刪除乙個元素後,剩下的每個數字出現的次數相同。ps 如果刪除後沒有元素存在,也可以認為每個數字有相同的次數。陣列長度 2,105 元素值 2,105 在遍歷陣列的過程中,計算每個數字的頻率對映val2freq,再統計頻率的頻率。對於...
最大頻率棧
實現 freqstack,模擬類似棧的資料結構的操作的乙個類。freqstack 有兩個函式 push int x 將整數 x 推入棧中。pop 它移除並返回棧 現最頻繁的元素。如果最頻繁的元素 不只乙個,則移除並返回最接近棧頂的元素。push 5,7,5,7,4,5 pop 返回 5,因為 5 是...