算法与数据结构
KAIHINGWON
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
排序算法
排序算法 时间复杂度 是否基于比较 冒泡 、插入、选择 O(n^2) 是 快排 、归并 O(nlogn) 是 适合小规模数据的排序: 排序算法 是否原地排序 是否稳定 实际应用 冒泡排序(Bubble Sort) 是 是 少 插入排序(Insertion Sort) 是 是 多 选择排序(Selection Sort) 是 否 少 原地排序:特指空间复杂度是 O(1) 的排序算法。 稳定性:若待排序的序列中存在值相等的元素,经过排序之后,相等元素之间原有的...原创 2020-07-29 22:58:29 · 226 阅读 · 0 评论 -
STL容器
一、顺序容器 容器中的位置来顺序保存和访问的 vector向量(动态数组) 底层数据结构为数组,特性: 1)支持随机快速访问:时间复杂度为O(1); 2)插入或删除非尾结点:时间复杂度为O(n); 3)若初始分配空间已满会引起扩容,重新申请一个 1.5 / 2 倍大的内存空间,将原空间内容拷贝过来,随后释放原空间,操作耗时。 注意:插入和删除操作后会导致旧迭代器失效。 list列表 底层数据结构为双向循环链表,特性: 1)支持快速的增删:时间复杂度为O(1); 2)查找元素:时间复杂度为O(n); 2)内存原创 2020-07-19 20:06:04 · 185 阅读 · 0 评论 -
数据结构
链表 struct ListNode{ int val; ListNode *next; //前驱指针 ListNode *pre; //后继指针 }; LeetCode: (206)反转链表 (141)环形链表 栈 //栈 #include <stack> stack<int> a //压入栈顶 a.push(); //栈顶弹出 a.pop(); //返回栈顶 a.top(); LeetCode: (20)有效的括号 (232)用栈实现队列 单端队列 //单端队列 #i原创 2020-07-22 23:32:52 · 212 阅读 · 0 评论 -
BFS与DFS
BFS(Breath First Search):广度优先搜索 DFS(Deep First Search):深度优先搜索 BFS代码模板:通过队列遍历 LeetCode:(102)二叉树的层序遍历 「BFS 遍历」、「层序遍历」、「最短路径」实际上是递进的关系。在 BFS 遍历的基础上区分遍历的每一层,就得到了层序遍历。在层序遍历的基础上记录层数,就得到了最短路径 BFS(TreeNode* root) { //该队列用于存放每层节点 queue<TreeNode*> q; //首原创 2020-07-24 00:41:42 · 140 阅读 · 0 评论 -
斐波那契数列
斐波那契数列: F(n) = F(n-1)+F(n-2) LeetCode: (70)爬楼梯 1. 递归 时间复杂度:O(2^n) 空间复杂度:O(n) int climbStairs(int n) { return climb(n); } int climb(int n) { //终止条件,第一阶为1,第二阶为2 if(n <= 2) { return n; } //每一阶为前两阶之和 return climb(n-1原创 2020-07-25 22:05:54 · 197 阅读 · 0 评论 -
二分查找
二分查找也称折半查找(Binary Search),是一种效率较高的查找方法,前提是数据结构必须先排好序,且要求为线性表,具有有随机访问的特点(如数组)。查找的时间复杂度为 O(logN)。 代码模板: left = 0; right = sizeof(arry) - 1; while(left <= right) { //防止溢出 int mid = left + (right -left)/2; if(arry[mid] == target) //匹配成功,返回结果 return原创 2020-07-28 23:02:11 · 200 阅读 · 0 评论
分享