算法与数据结构
文章平均质量分 50
在学习算法与数据结构过程中的经验与总结
春不寒.
脚步从未停歇
展开
-
动态规划总结专题一
本文参照labuladong大神的算法小抄,读后笔记如下文章目录一、概述二、入门题目(斐波那契数列)三、凑零钱问题四、子序列问题一、最长递增子序列(LIS) : 一维dp数组二、最长公共子序列(LCS) : 二维dp数组三、编辑距离:二维dp数组四、最长回文子序列五、高楼扔鸡蛋问题六、股票买卖问题一、问题概述二、买卖股票的最佳时机:只允许完成一笔交易三、买卖股票的最佳时机II:不限制交易次数四、买卖股票最佳时机含冷冻期:即每次卖出股票后要等一天才能继续交易五、买卖股票最佳时机含手续费:每笔交易需要支付.原创 2020-09-08 11:02:14 · 589 阅读 · 0 评论 -
Kosaraju算法之直观理解
参照《算法》第四版书上相关内容注:有向图取反后与原有向图的连通性相同。Kosaraju算法用来解决有向图的连通性问题,算法的基本步骤:1.对一幅有向图G,计算它的反向图GR的逆后序排列(一次dfs)。2.按由1计算得到的顺序对G进行dfs操作,来访问所有未被标记的顶点。3.在构造函数中,所有在同一个递归dfs()调用中被访问到的顶点都在一个强连通分量中。疑惑在于:第一步...原创 2020-03-29 18:51:32 · 2763 阅读 · 0 评论 -
数组模拟建立邻接表的两种方式
数组模拟建立邻接表所有的边用一个e[]数组来存储,每条边对应的索引就是其编号。在建立邻接表时,表中存放的实质是边的编号。注意:点的编号和边的编号不同int N,M; //N为点的最大数量,M为边的最大数量int idx; //为当前边的编号int head[N],e[M],ne[M];head[a]; //存放一个与a点连接的边的编号e[idx]; //抽象为表示idx当前边,但结...原创 2020-01-30 18:23:17 · 668 阅读 · 0 评论 -
一、线性结构
一、链表typedef int ElementType;typedef ElementType ET;1.单向链表//定义typedef struct Node *List;struct Node{ ET Data; List Next;};//申请内存空间List p=(List)malloc(sizeof(struct Node));//插入结点/...原创 2019-07-31 17:46:55 · 342 阅读 · 0 评论 -
PTA-链表去重-C语言
给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。输入格式:输入在第一行给出 L 的第一个结点的地址和一个正整数 N(≤105,为结点总数)...原创 2019-09-20 19:16:30 · 7534 阅读 · 5 评论