校招集训营笔面试算法
大约 2 分钟
资料来源与说明
本部分是学习算法课时的笔记,仅代表个人认为比较重要的点的记录,方便日后回顾知识点。由于秋招时间紧,快速过一遍重点,视频中一些基础我就略过不记录,想知道全貌可以点击下方链接进行学习:
牛客/学习/校招集训营/笔面试算法
1.1 基本语法回顾
函数和递归

注意函数调用中局部变量和全局变量的辨别,容易想当然的出错!如上图所示,尽管f(x)
函数内进行了x相关的加减操作,但是那是对形参x的操作,并不是对外部实参中x变量进行操作,这两者只是变量名相同实际上并不是相同的,形参x在函数块结束后就销毁了对外面那个实参x没有任何影响!这里容易混淆,y就不用说了,全局变量函数内直接修改。所以答案应该是x为1,y为4
。
1.2 STL介绍
#include<bits/stdc++.h>
算法万能头
vector
vector容器是一个可变长度的数组,底层实现为动态数组。
vector<int>a; //vector的定义
a.push_back(x); //在容器a的最后新增一个数x
a[i]; //调用a的下标i对应的数
sort(a.begin(),a.end()); //对a数组(升序)排序
a.size() //查看a的长度,一般用在循环结构遍历
vector在算法中常用来代替数组(大多数情况),优缺点如下:
- 优点:不用担心数组开小了后面有越界风险
- 缺点:代码方面有点复杂

总结:
图论一般要二维的链表数组建立邻接表或者二维数组建立邻接矩阵,可以使用容器数组vector<int> a[num]
代替实现链表数组,比链表数组更方便,利用其长度可变性优化业务逻辑。
stack/queue/deque/priority_queue
stack