
数据结构与算法
文章平均质量分 92
数据结构与算法
剑圣土豆
Welcome
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构与算法: 从0到1 Trie树的实现与用法
1、基础知识2、实现3、题目原创 2020-09-14 14:56:53 · 479 阅读 · 0 评论 -
数据结构和算法:从0到1系列 回溯小专题
一、回溯法回溯法:(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。对回溯的理解:一种穷举方法,类似一个枚举的搜索尝试过程,在搜索尝试的过程中找到问题的解,当发现不满足求解条件时,就“回溯”。当然一般要考虑“剪枝”。搜索方法采用深度优先搜索DFS。用回溯的时候一般用深度优先搜索+剪枝实现,每次从选择列表中先做选择,然后向原创 2020-09-10 09:44:30 · 171 阅读 · 0 评论 -
数据结构和算法:从0到1 二叉树的前序、中序、后序遍历方法(递归和迭代的写法)
基础知识点可以看这篇文章:数据结构和算法 从0到1 :二叉树和二叉搜索树先掌握递归的写法,然后再掌握非递归的写法:用栈(先进先出)一、前序遍历根左右,先访问根结点,然后依次访问左右结点。1、递归写法:先访问根结点,然后递归访问左子树,递归访问右子树...原创 2020-08-29 11:52:10 · 231 阅读 · 0 评论 -
数据结构与算法:从0到1 排序算法小剧场,由浅入深掌握排序算法
先看一个表:原创 2020-08-13 08:52:34 · 485 阅读 · 0 评论 -
数据结构和算法 从0到1:图的深度优先搜索DFS
1、概念2、算法首先访问图中某一起始点v,然后由v出发,访问与v邻接且未被访问的任一顶点w1,再访问与w1邻接且未被访问的任一顶点w2…重复上述过程。当不能再继续向下访问时,依次退回到最近被访问的顶点,若它还有邻接顶点未被访问过,则从该点开始继续上述搜索过程,直至图中所有顶点均被访问过为止。伪代码如下:bool visited[MAX_VERTEX_NUM];//访问标记数组void DFSTraverse(Graph G){ //对图G进行深度优先遍历 for (i = 0;i <原创 2020-07-05 09:23:55 · 234 阅读 · 0 评论 -
数据结构和算法 从0到1:图的广度优先搜索BFS
1、概念2算法框架3时间复杂度原创 2020-07-05 00:17:25 · 397 阅读 · 0 评论 -
数据结构和算法 从0到1 :二叉树和二叉搜索树
一、基础知识点:1、树:连通的无环图就是树也要搞清楚下面的概念:子树:左子树、右子树根结点父结点子结点兄弟结点叶子结点层深度:最大的层(可以把根结点当作第一层,深度为1)2、二叉树1)二叉树:是一种特殊的树,对于每个结点,如果最多有两个分支,即每个结点最多有两个子结点,分别叫做左子结点,和右子结点。2)满二叉树:除了叶子结点外,其他结点都有两个结点3)完全二叉树:除了最后一层以外,其他层的结点个数都达到最大,并且最后一层的叶子结点都靠左排列。下图左边是满二叉树,右边是完原创 2020-07-02 16:33:30 · 412 阅读 · 0 评论 -
算法思想 从0到1:分治法——二分查找模板小结(三种:第一种基础,推荐掌握第一种,第三种是第二种的变体)
二分查找模板小结(三种:第一种基础,推荐掌握第二种,第三种是第二种的变体)刷题要总结,以块进行刷题。还有参加周赛,哪里不会学哪块。一个是积累基础,一个是查漏补缺。加油以力扣704题为例:题目描述:题解:方法1: 循环条件为left < right。先看mid处的值与target的关系,如果相等就输出,然后划分为两个区间[left,mid -1],[mid +1,right]cl...原创 2020-05-03 10:28:01 · 314 阅读 · 0 评论 -
数据结构和算法:从0到1-----图算法的基本概念
一、背景:1、一笔画问题:手机解锁图案需一笔画出2、柯尼斯堡七桥问题:3、现实中的图:1)计算机网络2)交通:3)社交网络二、图的概念1、图的定义、相邻与关联1)图的定义图可以表示为一个二元组G=<V,E>,其中V表示非空顶点集,其元素称为顶点(Vertex)E表示边集,其元素称为边(Edge)e=(u,v)表示一条边,其中u∈V,v∈V,e∈E2)有向图和无向图无向图G1=<V1,E1>有向图G2-<V2,E2>3)相邻(原创 2020-07-01 15:56:29 · 527 阅读 · 0 评论 -
算法思想 从0到1:分而治之 -----归并排序(且介绍递归的复杂度怎么分析)
思想:分解原问题递归子问题合并问题解当问题有子问题时,可以分解,化大为小,各个击破。那么看下面的图分解输入两两合并算法流程:归并排序伪代码:合并伪代码:用递归树分析时间复杂度:...原创 2020-06-23 17:42:20 · 240 阅读 · 0 评论 -
动态规划 从0到1:完全背包问题,提供模板和思路,简单易懂好上手(同时可在相应网站上做练习)
动态规划可以一般按照下面的步骤进行:1)、状态定义;2)、状态转移方程;3)、初始化;4)、输出;5)、思考状态压缩。完全背包问题这个问题非常类似于01背包问题,所不同的是每种物品有无限件1、题目描述:https://www.acwing.com/problem/content/3/2、题解:状态定义:dp[i][j] 若只使用前 i 个物品,当背包容量为 j 时,有 dp[i][j] 种方法可以装满背包。状态转移方程:dp[i][j] = max(dp[i-1][j],dp原创 2020-06-17 22:41:40 · 146 阅读 · 0 评论 -
数据结构和算法 从0到1:算法的分析-----时间复杂度和空间复杂度该如何进行分析
我们用O(T(n))来表示复杂度,读bigO,T(n)为输入的规模,只看T(n)的高级项,忽略低级项和常数项,这种方法叫渐进分析。(注意:这是最坏情况下的分析)我们统一算法和机器性能基本操作,如运算、赋值、比较等,基本操作的代价为1.统一后,算法的运行时间依赖于问题的输入规模与实例。相同输入规模,实例影响性能:下面是插入排序的伪代码,在内循环中,我们不知道比较的次数,此时考虑最好情况和最坏情况插入排序的输入,正序或者逆序,比较的次数不同但是我们通常情况下考虑的是最坏情况下的复杂度:也即原创 2020-06-17 10:09:50 · 483 阅读 · 0 评论 -
动态规划入门:01背包问题,提供模板和思路,简单易懂好上手(同时可在相应网站上做练习)
动态规划可以一般按照下面的步骤进行:1)、状态定义;2)、状态转移方程;3)、初始化;4)、输出;5)、思考状态压缩。如下:1、01背包问题:这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。1、题目描述:https://www.acwing.com/problem/content/description/2/2、题解:用子问题定义状态:即 dp[i][j] 表示前 i件物品恰放入一个容量为 j的背包可以获得的最大价值。则其状态转移方程便是:dp[i][j]原创 2020-06-16 20:37:48 · 239 阅读 · 0 评论