滑动窗口算法,这个算法技巧的思路非常简单,就是利用双指针维护一个窗口,不断滑动,然后更新答案。LeetCode上有差不多10道运用滑动窗口算法的题目,难度都是中等和困难。该算法的大致逻辑如下:
C++STL容器整理
C++内存管理
内存分配方式
简介
在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。
- 栈:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
- 堆:是操作系统所维护的一块特殊内存,用于程序的内存动态分配,C语言使用malloc从堆上分配内存,使用free释放已分配的对应内存。。
- 自由存储区:是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。
- 全局/静态存储区:全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有这个区分了,他们共同占用同一块内存区。
常量存储区:这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改。
C++优先队列的使用方法(自定义排序)
priority_queue本质是一个堆。
1.头文件是#include<queue>
2.关于priority_queue中元素的比较
模板申明带3个参数:priority_queue
Container必须是用数组实现的容器,比如vector,deque等等,但不能用 list。STL里面默认用的是vector。