文章分类 -  算法

摘要://更简单的非递归后序遍历 void postorderTraversalNew(TreeNode *root, vector &path) { stack > s; s.push(make_pair(root, false)); bool visited; while(!s.empty()) { root = s.top().first;... 阅读全文
posted @ 2019-08-05 13:11 unique_ptr 阅读(228) 评论(0) 推荐(0) 编辑
摘要:问题:给出两个数a和b,求出他们的最大公约数(greatest common divisor)。 解法一:辗转相除法,又叫欧几里得算法。两个正整数a和b(a>b),他们的最大公约数等于a除以b的余数和b之间的最大公约数。 比如10和25,25除以10余5,那么10和25的最大公约数等同于5和10之间 阅读全文
posted @ 2019-08-03 17:28 unique_ptr 阅读(3000) 评论(0) 推荐(0) 编辑
摘要:void popSeq(listin,stack st,vector out,vector>& res,int len) { if (out.size() == len) { res.push_back(out); return; } //出栈 if (st.size() > 0) { out.push_back(s... 阅读全文
posted @ 2019-08-01 23:14 unique_ptr 阅读(183) 评论(0) 推荐(0) 编辑
摘要:关联分析又称关联挖掘,就是在交易数据、关系数据或其他信息载体中,查找存在于项目集合或对象集合之间的频繁模式、关联、相关性或因果结构。 或者说,关联分析是发现交易数据库中不同商品(项)之间的联系。 关联分析是一种简单、实用的分析技术,就是发现存在于大量数据集中的关联性或相关性,从而描述了一个事物中某些 阅读全文
posted @ 2019-07-19 21:19 unique_ptr 阅读(8739) 评论(0) 推荐(0) 编辑
摘要:Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构, 阅读全文
posted @ 2019-05-24 23:27 unique_ptr 阅读(1154) 评论(0) 推荐(0) 编辑
摘要:基本思想: 动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规 阅读全文
posted @ 2019-05-22 19:05 unique_ptr 阅读(1966) 评论(0) 推荐(1) 编辑
摘要:关于最长公共子序列(LCS) 最长公共子序列和最长公共子串是有区别的,之前我一直把它们混淆。 最长公共子序列。 求解最长公共子序列 这是一个动态规划问题。如何求解最长公共子序列(以下用LCS代替)呢?我们假设已经知道Z={z1,z2,...zk}是X={x1,x2,...,xm}和Y={y1,y2, 阅读全文
posted @ 2019-05-22 17:06 unique_ptr 阅读(153) 评论(0) 推荐(0) 编辑
摘要:解释:两个鸡蛋一样,只有在达到某个楼层高度时,才会摔碎。可以假设这个摔碎临界楼层是N。 1、最笨的方法——只用一个鸡蛋遍历——N次尝试 一个鸡蛋遍历那就是从一楼顶开始,逐层尝试,如果摔不碎那就继续往上层尝试,直到N层摔碎了。这样就尝试了N次,而且浪费了一个鸡蛋的使用。 2、二分查找——两个鸡蛋,鸡蛋 阅读全文
posted @ 2019-05-11 17:53 unique_ptr 阅读(1970) 评论(1) 推荐(0) 编辑
摘要:1 class LRUCache { 2 public: 3 struct Node 4 { 5 int key; 6 int val; 7 Node( int _k, int _v ) : key( _k ), val( _v ) 8 { 9 } 10 }; 1... 阅读全文
posted @ 2019-05-04 18:15 unique_ptr 阅读(952) 评论(0) 推荐(0) 编辑
摘要:B树 1.前言: 动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree), "红黑树" (Red Black Tree ),B tree/B+ tree/ B\ tree (B~Tree)。前三者是典型的二叉查找 阅读全文
posted @ 2019-05-04 17:45 unique_ptr 阅读(227) 评论(0) 推荐(0) 编辑
摘要:教你透彻了解红黑树 二叉查找树 由于红黑树本质上就是一棵二叉查找树,所以在了解红黑树之前,咱们先来看下二叉查找树。 二叉查找树(Binary Search Tree),也称有序二叉树(ordered binary tree),排序二叉树(sorted binary tree),是指一棵空树或者具有下 阅读全文
posted @ 2019-05-04 17:21 unique_ptr 阅读(124) 评论(0) 推荐(0) 编辑
摘要:顺序结构 顺序栈(Sequence Stack) SqStack.cpp 顺序栈数据结构和图片 typedef struct { ElemType *elem; int top; int size; int increment; } SqSrack; 队列(Sequence Queue) 队列数据结 阅读全文
posted @ 2019-05-01 17:33 unique_ptr 阅读(414) 评论(0) 推荐(0) 编辑
摘要:查找 图搜索算法 阅读全文
posted @ 2019-05-01 17:25 unique_ptr 阅读(1114) 评论(0) 推荐(0) 编辑
摘要:1. 背景       笔试时,遇到一个算法题:差不多是 在n个不同的数中随机取出不重复的m个数。洗牌算法是将原来的数组进行打散,使原数组的某个数在打散后的数组中的每个位置上等概率的出现,刚好可以解决该问题。2. 洗牌算法      阅读全文
posted @ 2019-05-01 16:35 unique_ptr 阅读(784) 评论(0) 推荐(0) 编辑
摘要:转载请注明出处:勿在浮沙筑高台http://blog.csdn.net/luoshixian099/article/details/51908175 关于图的几个概念定义: 连通图:在无向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该无向图为连通图。 强连通图:在有向图中,若任意两个顶点 阅读全文
posted @ 2019-04-30 16:05 unique_ptr 阅读(268) 评论(0) 推荐(0) 编辑
摘要:NYOJ 58 最少步数 转:https://www.cnblogs.com/orange1438/p/4063675.html 最少步数 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0, 阅读全文
posted @ 2019-04-30 15:33 unique_ptr 阅读(4134) 评论(0) 推荐(0) 编辑
摘要:深度优先遍历(栈,先压右节点,再压左节点) 也就深入的遍历,沿着每一个分支直到走到最后,然后才返回来遍历剩余的节点。二叉树不同于图,图需要标记节点是否已经访问过,因为可能会存在环,而二叉树不会出现环,所以不需要标记。那么,我们只需要一个栈空间,来压栈就好了。因为深度优先遍历,遍历了根节点后,就开始遍 阅读全文
posted @ 2019-04-30 15:00 unique_ptr 阅读(1363) 评论(0) 推荐(0) 编辑
摘要:1 //前序遍历 2 //递归写法 3 /** 4 * Definition for a binary tree node. 5 * struct TreeNode { 6 * int val; 7 * TreeNode *left; 8 * TreeNode *right; 9 * TreeNode(int x) : val(x),... 阅读全文
posted @ 2019-04-30 14:57 unique_ptr 阅读(299) 评论(0) 推荐(0) 编辑
摘要:1 void GetNext(char t[] , int next[]){ 2 int i = 0; 3 int k = -1; 4 next[0] = -1; 5 while(t[i] != '\0'){ 6 if(k == -1 || t[i] == t[k]){ 7 next[++i] = 阅读全文
posted @ 2019-04-29 23:23 unique_ptr 阅读(87) 评论(0) 推荐(0) 编辑
摘要:0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序 阅读全文
posted @ 2019-04-29 22:12 unique_ptr 阅读(149) 评论(0) 推荐(0) 编辑