文章链接: 150. 逆波兰表达式求值、 239. 滑动窗口最大值 、 347.前 K 个高频元素
视频链接: 150. 逆波兰表达式求值、 239. 滑动窗口最大值 、 347.前 K 个高频元素
题目链接: 150. 逆波兰表达式求值、 239. 滑动窗口最大值 、 347.前 K 个高频元素
思路:
150.逆波兰表达式求值
- 遇到数字就将数字放进栈里;
- 遇到符号就将栈顶的两位作相应的运算,做完运算后再放回栈里;
- 以此类推,直到栈中只剩最后一个元素,即为答案。
239.滑动窗口最大值
如何写一个“单调队列”(单调递减的队列)?
- 定义一个双向队列;
- 定义 pop() 函数:删除最前面的值;
- 定义 push() 函数:将队列里小于 value(要放进去队列的数) 值的删除,再将 value 放进去;(关键)
- 定义 front() 函数:返回队列的最前面的值(单调队列的出口处的值);
347.前 K 个高频元素
最适合解法:大顶堆、小顶堆 --> 优先级队列(priority_queue)
该题:小顶堆
困难:
150.逆波兰表达式求值
问:stoll() 是什么函数?
答:此函数将在函数调用中作为参数提供的字符串转换为long long int。
补充:stol():此函数将在函数调用中作为参数提供的字符串转换为long int。
239.滑动窗口最大值
问:什么是“C++ 继承访问权限控制(public,protected,private)”?
答: C++ 继承访问权限控制(public,protected,private) - 菜鸟教程 (cainiaojc.com)
问:解释deque(双向队列) ?
答:deque
是一个双向队列(double-ended queue),可以在队列的两端
进行元素的插入和删除操作。其是C++STL(标准模板库)中的一种容器,可以用于存储各种类型的元素。deque的特点是可以在队列的两端进行元素的操作,并且可以高效地在队列的任意位置进行元素的插入和删除操作。
347.前 K 个高频元素
问:为什么用小顶堆不用大顶堆?
答:因为pop的时候,可以直接pop掉最小的;用大顶堆的话,pop的时候会pop掉最大的(本题中就是最高频的。)
问:重载运算符operator。
答:(参考: C++ operator()(重载小括号符) - 简书 (jianshu.com))
C++的类可以重载()【即小括号符】,来实现仿函数,或者叫函数对象。
基本使用方式:
问:map ::iterator it 的用法。
答:(参考: map<int,int>::iterator it 的用法_map<int, int>::iterator it;-CSDN博客、
map iterator pair priority_queue C++_c++ map迭代器-CSDN博客)
这种方法能够取出保存在map容器里面的数据。
问:优先队列的相关知识?
答:priority_queue<Type, Container, Functional>, 其中Type为数据类型,Container为保存数据的容器,Functional为元素比较方式。如上:
注意:Container必须是用数组实现的容器。
(参考: https://blog.csdn.net/qq_41687938/article/details/117827166)
今日收获:
这是前天的任务,拖着拖着写了三天。主要学习了对栈(第一题)和队列(后两题)的应用,学会了如何定义一个“单调队列”,如何定义一个“小根堆”。