C++ 牛客网做题笔记
作为一名程序员,练习算法和数据结构是不可或缺的一部分。而牛客网提供了很多 C++ 经典题目,可以让我们有更好的练习机会。
在这篇文章中,我将分享我在做题时遇到的一些问题和解决方法。同时,我将提供一些源代码来帮助你更好地掌握这些算法和数据结构。
- 堆
堆是一种基于完全二叉树的数据结构,它的每个节点都比它的子节点大或小(取决于是大根堆还是小根堆)。堆常用于优先队列和排序算法中。
下面是一个简单的 C++ 实现:
#include <iostream>
#include <queue>
using namespace std;
int main() {
priority_queue<int> pq;
pq.push(3);
pq.push(1);
pq.push(4);
cout << pq.top() << endl;
pq.pop();
cout << pq.top() << endl;
return 0;
}
这段代码实现了一个最大堆,并输出了堆顶元素。我们可以使用 priority_queue 类模板来简单地实现堆。
- 并查集
并查集是一种用来管理元素分组情况的数据结构,常用于图论的应用中。它可以判断两个元素是否在同一个集合中,并可以将两个集合合并成一个。
下面是一个简单的 C++ 实现:
#incl