随笔分类 - 算法基础
摘要:搜索与图论 深度优先搜索 想象对一棵树进行搜索,深搜会尽可能往深了搜索,不撞南墙不回头,在回溯的时候会搜索该节点其他可能的路径。深搜使用的数据结构一般是栈Stack,于是一般用递归实现,使用的空间是$O(h)$,路径不具有最短性。 DFS最重要的两个部分:回溯和剪枝。用DFS做题时,首先要搞清楚用什
阅读全文
摘要:数据结构 单链表 通常链表的实现方式 struct Node { int val; Node *next; }; 用结构体加指针实现单链表效率不高,因为每次添加一个节点,需要new一个 Node(),这个操作非常慢。 数组模拟单链表 用数组实现单链表,数组e[N]用来存储值val,数组 ne[N]
阅读全文
摘要:STL常用技巧 Vector vector(变长数组),倍增的思想,支持比较运算(按字典序) 定义方式 vector<int> a; // 定义:一个vector数组a vector<int> a(10); // 定义:一个长度为10的vector数组a vector<int> a(10,3); /
阅读全文
摘要:基础算法 快速排序 思路 第一步:确定分界点,对于给定的无序数组,先界定一个中点值pivot。(注意:该值不一定是下标为中点的值,可以是任何数,一般来说取第一个、最后一个或者中间值)然后利用双指针i和j,左边一个右边一个同时往里走。 第二步:划分区间,对于左指针i,每走一步判断该下标的值是不是大于p
阅读全文

浙公网安备 33010602011771号