前言
暑期实习刷题笔记,希望以后去面FANG也用得上
数据结构
vector
- 构造函数:
vector<int> arr
vector<int> arr(5)
初始化为0
vector<int> arr(5,1)
初始化为1
vector<int> arr = {2,3};
- 遍历:
for(auto i = arr.begin();i!=arr.end();++i) cout<<*i<<endl;
- 插入:
arr.insert(arr.begin()+1,100)
在第二位插入100 - 创建多级数组
vector<vector<vector>> dp(n, vector<vector>(n, vector()));
优先级队列priority_queue
priority_queue<int,vector<int>, less<int>> pq; `
pq.empty() // 如果队列为空,则返回真
pq.pop() // 删除对顶元素,删除第一个元素
pq.push() // 加入一个元素
pq.size() // 返回优先队列中拥有的元素个数
pq.top() // 返回优先队列对顶元素,返回优先队列中有最高优先级的元素
用堆实现,建堆时间O(n),队首出队队尾进队为O(logn)
表示数组元素是int,用vector实现,默认比较函数是less
最大堆,堆顶(队首)最大出队,堆底(队尾)进队
比较结构体的写法
struct cmp{
bool operator()(pair<int,int> a,pair<int,int> b){
return a.first>b.first;
}
}
<