LeetCode 筆記 - 1838. Frequency of the Most Frequent Element
題目在此 1838. Frequency of the Most Frequent Element
給定一個數列 nums 跟一個整數 k,我們可以對 nums 中的任意元素加上 1 最多 k 次,請問最多可以有幾個相同元素?
解題思維
名詞解說:
- Sorting:排序
- Sliding Window:滑動視窗
- Two Pointers:雙指針
跟頻率相關的題目,通常可以用排序來處理,這題也不例外。
排序之後,我們用兩個指標 left 跟 right 來表示一個視窗,如果我們可以用 k 來把這個視窗填滿,也就是說除了 nums[right] 以外,nums[left], nums[left + 1], nums[left + ...] 都要跟 nums[right] 相等。
如此一來,我們就可以把 right - left + 1當作是目前視窗的最大頻率。
而視窗如果可以使用 k 來填滿的總和上限就是 nums[right] * (right - left + 1),而這個總合不應該超過 sum(nums[left: right + 1]) + k,如果超過的話,就代表我們需要將 left 往右移動,直到視窗可以使用 k 來填滿。
程式碼
1 | class Solution: |
