451. Sort Characters By Frequency
題目網址:https://leetcode.cn/problems/sort-characters-by-frequency/
題意:給一 string
s, 根據每個 char 出現的頻率對其進行降序排列。返回已排序過的 string, 若有多個答案, 則返回其中任意一個。

Solution:
想法:利用 Heap
- 計算
s中每個元素的出現頻率- 將
{char, cnt}push 到 max heap 中- 不斷取出 top 直到 heap 為空, s
.append(cnt, char)代表s一次新增cnt個 char
class Solution { |
- time:$O(n)$ ➔ $O(n) + O(26 \cdot log(n))$
- $O(n)$:第一個 for loop 和 while loop 的
s.append() - $O(26 \cdot log(n))$:第二個 for loop 和 while loop, 因為 char 最多
26種, 因此q的元素不超過26個
- $O(n)$:第一個 for loop 和 while loop 的
- space:$O(1)$ ➔ 因為
freq和q最多26個元素, 且s為 input string, 故只需常數空間
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Zako's Blog!
評論