給一非空的單詞列表,返回前 k 個出現次數最多的單詞。
返回的答案應該按單詞出現頻率由高到低排序。如果不同的單詞有相同出現頻率,按字母順序排序。
示例 1:
輸入:
["i"
,"love"
,"leetcode"
,"i"
,"love"
,"coding"
], k =
2輸出:
["i"
,"love"
]解析:
"i" 和 "love" 為出現次數最多的兩個單詞,均為2次。
注意,按字母順序 "i" 在 "love" 之前。
示例 2:
輸入:
["the"
,"day"
,"is"
,"sunny"
,"the"
,"the"
,"the"
,"sunny"
,"is"
,"is"
], k =
4輸出:
["the"
,"is"
,"sunny"
,"day"
]解析:
"the"
,"is"
,"sunny" 和 "day" 是出現次數最多的四個單詞,
出現次數依次為 4,3
,2 和 1 次。
注意:
假定 k 總為有效值, 1 ≤ k ≤ 集合元素數。
輸入的單詞均由小寫字母組成。
擴充套件練習:
嘗試以 o
(n log k) 時間複雜度和 o
(n) 空間複雜度解決。
class
solution
void
down
(int i,
int n)
else
if(child+
1(m[str[child]
]==m[str[child+1]
])&&(str[child]
>str[child+1]
))if(m[str[child]
]>m[str[parent]])
elseif(
(m[str[child]
]==m[str[parent]])
&&(str[child]
child=
2*child+1;
}}vector
topkfrequent
(vector
& words,
int k)
for(mapint>
::iterator it=m.
begin()
;it!=m.
end(
);it++
)for
(int i=size/2-
1;i>=
0;i--
)for
(int i=
1;i<=k;i++
)
vectorv;
for(
int i=size-
1;i>=size-k;i--
)return v;
} mapint>m;
vectorstr;
int size;
};
class
solution);
if(q.
size()
>k) q.
pop();
} vectorv;
while
(!q.
empty()
)reverse
(v.begin()
, v.
end())
;return v;}}
;
692 前K個高頻單詞
2021 05 20 leetcode每日一題 標籤 堆 字典序 雜湊表 題目 給一非空的單詞列表,返回前 k 個出現次數最多的單詞。返回的答案應該按單詞出現頻率由高到低排序。如果不同的單詞有相同出現頻率,按字母順序排序。輸入 i love leetcode i love coding k 2 輸出...
LeetCode 692 前K個高頻單詞
題目 給一非空的單詞列表,返回前 k 個出現次數最多的單詞。返回的答案應該按單詞出現頻率由高到低排序。如果不同的單詞有相同出現頻率,按字母順序排序。示例 1 輸入 i love leetcode i love coding k 2 輸出 i love 解析 i 和 love 為出現次數最多的兩個單詞...
前K個高頻單詞 leetcode 692
給一非空的單詞列表,返回前 k 個出現次數最多的單詞。返回的答案應該按單詞出現頻率由高到低排序。如果不同的單詞有相同出現頻率,按字母順序排序。示例 1 輸入 i love leetcode i love coding k 2 輸出 i love 解析 i 和 love 為出現次數最多的兩個單詞,均為...