算法学习(栈,队列,优先队列相关)
2022-01-07 本文已影响0人
SEU小翔哥
栈
stack<char> stack;
stack.top();
stack.push(num);
LeetCode 20 有效的括号
image.pngLeetCode 71 简化路径(练习)
image.pngimage.png
LeetCode 144 二叉树前序遍历
LeetCode 94 二叉树中序遍历(练习)
LeetCode 145 二叉树后序遍历(练习)
LeetCode 341 扁平化嵌套列表迭代器(练习)
image.png队列
queue<pair<TreeNode,int>> q;
q.push(make_pair(root,0));
TreeNode node = q.front().first;
int level = q.front().second;
LeetCode 102 二叉树的层序遍历
image.pngLeetCode 107 二叉树的层序遍历II(练习)
image.pngLeetCode 103 二叉树锯齿型层序遍历(练习)
image.pngLeetCode 199 二叉树的右视图(练习)
image.pngLeetCode 279 完全平方数
image.pngLeetCode 127 单词接龙(练习)
image.pngimage.png
LeetCode 126 单词接龙II(练习)
image.pngimage.png
优先队列,底层实现:堆。默认最大堆
最大堆:priority_queue<int> pq;
pq.push(num)
pq.top()
最小堆: priority_queue<int, vector<int>, greater<int>> pq;
自定义比较函数:priority_queue<int, vector<int>, function<bool(int,int)>> pq(myCmp);
bool myCmp(int a , int b){
return a%10 < b%10;
}
需要学习一下堆的底层实现,有些公司会考堆的白板编程
LeetCode 347 前k个高频元素, 方法优先队列
image.pngimage.png
image.png