mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-06 15:09:40 +08:00
更新 0347.前k个高频元素 排版格式修复
This commit is contained in:
@ -5,8 +5,6 @@
|
||||
<p align="center"><strong><a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p>
|
||||
|
||||
|
||||
|
||||
|
||||
> 前K个大数问题,老生常谈,不得不谈
|
||||
|
||||
# 347.前 K 个高频元素
|
||||
@ -29,9 +27,11 @@
|
||||
* 题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。
|
||||
* 你可以按任意顺序返回答案。
|
||||
|
||||
# 思路
|
||||
## 算法公开课
|
||||
|
||||
《代码随想录》算法视频公开课:[优先级队列正式登场!大顶堆、小顶堆该怎么用?| LeetCode:347.前 K 个高频元素](https://www.bilibili.com/video/BV1Xg41167Lz),相信结合视频在看本篇题解,更有助于大家对本题的理解。
|
||||
**[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html):[优先级队列正式登场!大顶堆、小顶堆该怎么用?| LeetCode:347.前 K 个高频元素](https://www.bilibili.com/video/BV1Xg41167Lz),相信结合视频再看本篇题解,更有助于大家对本题的理解**。
|
||||
|
||||
## 思路
|
||||
|
||||
这道题目主要涉及到如下三块内容:
|
||||
1. 要统计元素出现频率
|
||||
@ -122,7 +122,7 @@ public:
|
||||
* 时间复杂度: O(nlogk)
|
||||
* 空间复杂度: O(n)
|
||||
|
||||
# 拓展
|
||||
## 拓展
|
||||
大家对这个比较运算在建堆时是如何应用的,为什么左大于右就会建立小顶堆,反而建立大顶堆比较困惑。
|
||||
|
||||
确实 例如我们在写快排的cmp函数的时候,`return left>right` 就是从大到小,`return left<right` 就是从小到大。
|
||||
@ -130,10 +130,10 @@ public:
|
||||
优先级队列的定义正好反过来了,可能和优先级队列的源码实现有关(我没有仔细研究),我估计是底层实现上优先队列队首指向后面,队尾指向最前面的缘故!
|
||||
|
||||
|
||||
# 其他语言版本
|
||||
## 其他语言版本
|
||||
|
||||
### Java:
|
||||
|
||||
Java:
|
||||
```java
|
||||
|
||||
/*Comparator接口说明:
|
||||
@ -216,7 +216,8 @@ class Solution {
|
||||
}
|
||||
```
|
||||
|
||||
Python:
|
||||
### Python:
|
||||
|
||||
```python
|
||||
#时间复杂度:O(nlogk)
|
||||
#空间复杂度:O(n)
|
||||
@ -245,7 +246,7 @@ class Solution:
|
||||
return result
|
||||
```
|
||||
|
||||
Go:
|
||||
### Go:
|
||||
|
||||
```go
|
||||
//方法一:小顶堆
|
||||
@ -320,8 +321,8 @@ func topKFrequent(nums []int, k int) []int {
|
||||
|
||||
|
||||
|
||||
### JavaScript:
|
||||
|
||||
JavaScript:
|
||||
```js
|
||||
// js 没有堆 需要自己构造
|
||||
class Heap {
|
||||
@ -419,7 +420,7 @@ const topKFrequent = function (nums, k) {
|
||||
};
|
||||
```
|
||||
|
||||
TypeScript:
|
||||
### TypeScript:
|
||||
|
||||
```typescript
|
||||
function topKFrequent(nums: number[], k: number): number[] {
|
||||
@ -435,7 +436,8 @@ function topKFrequent(nums: number[], k: number): number[] {
|
||||
};
|
||||
```
|
||||
|
||||
C#:
|
||||
### C#:
|
||||
|
||||
```csharp
|
||||
public int[] TopKFrequent(int[] nums, int k) {
|
||||
//哈希表-标权重
|
||||
@ -473,7 +475,7 @@ C#:
|
||||
|
||||
```
|
||||
|
||||
Scala:
|
||||
### Scala:
|
||||
|
||||
解法一: 优先级队列
|
||||
```scala
|
||||
@ -517,7 +519,9 @@ object Solution {
|
||||
}
|
||||
```
|
||||
|
||||
rust: 小根堆
|
||||
### Rust
|
||||
|
||||
小根堆
|
||||
|
||||
```rust
|
||||
use std::cmp::Reverse;
|
||||
@ -549,3 +553,4 @@ impl Solution {
|
||||
<a href="https://programmercarl.com/other/kstar.html" target="_blank">
|
||||
<img src="../pics/网站星球宣传海报.jpg" width="1000"/>
|
||||
</a>
|
||||
|
||||
|
Reference in New Issue
Block a user