随笔分类 -  算法

摘要:声明: 链表定义如下:   从无头单链表中删除节点 详情: 给定一个没有头指针的单链表,一个指针指向此单链表中间的一个节点(不是第一个,也不是最后一个节点),请将该节点从单链表中删除。 题解: 解法一:由于单链表并没有给出头指针,因此我们无法通过遍历链表的方式找到该节点的前一个节点来改变其 阅读全文
posted @ 2018-10-26 17:52 zxzhang 阅读(1247) 评论(0) 推荐(1) 编辑
摘要:前提条件:有N个无序的数,假定它们各不相等,如何选出其中最大的若干个数 解法一: 适用于元素数量不多,内存中可存储整个数组序列。通过快速排序或堆排序对数组排序,时间复杂度为O(N*log2N),然后取出前K个数,时间复杂度为O(K),总时间复杂度为O(N*log2N) + O(K),进一步的,可以知 阅读全文
posted @ 2018-03-30 13:24 zxzhang 阅读(1178) 评论(0) 推荐(0) 编辑
摘要:Floyd判圈算法(Floyd Cycle Detection Algorithm),又称龟兔赛跑算法(Tortoise and Hare Algorithm),是一个可以在有限状态机、迭代函数或者链表上判断是否存在环,求出该环的起点与长度的算法。该算法据高德纳称由美国科学家罗伯特·弗洛伊德发明,但 阅读全文
posted @ 2017-08-13 22:51 zxzhang 阅读(4294) 评论(2) 推荐(6) 编辑
摘要:以下内容转载自:传送门 源于这两篇文章: http://blog.csdn.net/ggggiqnypgjg/article/details/6645824http://zhuhongcheng.wordpress.com/2009/08/02/a-simple-linear-time-algori 阅读全文
posted @ 2017-05-08 18:32 zxzhang 阅读(412) 评论(0) 推荐(0) 编辑
摘要:AVL树的介绍 平衡二叉树,又称AVL(Adelson-Velskii和Landis)树,是带有平衡条件的二叉查找树。这个平衡条件必须要容易保持,而且它必须保证树的深度是 O(log N)。一棵AVL树是其每个节点的左子树和右子树的高度最多差1的二叉查找树( 空树的高度定义为 -1 )。查找、插入和 阅读全文
posted @ 2016-10-31 10:37 zxzhang 阅读(2694) 评论(0) 推荐(2) 编辑
摘要:插入排序(O(N2)) 堆排序(2NlogN-O(NloglogN)) 归并排序O(NlogN) 快速排序O(NlogN) 阅读全文
posted @ 2016-10-07 14:35 zxzhang 阅读(260) 评论(0) 推荐(0) 编辑
摘要:传送门 之前我们介绍过图的邻接矩阵存储法,它的空间和时间复杂度都是N2,现在我来介绍另外一种存储图的方法:邻接表,这样空间和时间复杂度就都是M。对于稀疏图来说,M要远远小于N2。先上数据,如下。 第一行两个整数n m。n表示顶点个数(顶点编号为1~n),m表示边的条数。接下来m行表示,每行有3个数x 阅读全文
posted @ 2016-09-30 23:25 zxzhang 阅读(440) 评论(0) 推荐(1) 编辑
摘要:传送门 Description 给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的)。 比如两个串为: abcicba abdkscab ab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符串最长的子序列。 给出两个字符串A B,求A与B的最长公共子序列(子序列 阅读全文
posted @ 2016-09-17 15:37 zxzhang 阅读(486) 评论(0) 推荐(2) 编辑
摘要:原博文:传送门 最长递增子序列(Longest Increasing Subsequence) 下面我们简记为 LIS。 定义d[k]:长度为k的上升子序列的最末元素,若有多个长度为k的上升子序列,则记录最小的那个最末元素。注意d中元素是单调递增的,下面要用到这个性质。首先len = 1,d[1] 阅读全文
posted @ 2016-09-15 22:51 zxzhang 阅读(370) 评论(0) 推荐(0) 编辑
摘要:资料参考 Tarjan算法寻找有向图的强连通分量 基于强联通的tarjan算法详解 有向图强连通分量的Tarjan算法 处理SCC(强连通分量问题)的Tarjan算法 强连通分量的三种算法分析 Tarjan算法详解理解集合 ppt图解分析下载 强连通分量 强连通分量(strongly connect 阅读全文
posted @ 2016-09-11 02:06 zxzhang 阅读(983) 评论(0) 推荐(2) 编辑
摘要:表示图的一种简单的方法是使用一个二维数组,成为 邻接矩阵 表示法,对于每条边(u,v),我们置A[u][v] = 1,否则,数组元素就是0。如果边有一个权,那么我们可以置A[u][v]等于该权,而使用一个很大或者很小的权作为标记表示不存在的边。邻接矩阵的表示法无论是在理解还是写法上都很简单,但是空间 阅读全文
posted @ 2016-07-24 11:14 zxzhang 阅读(975) 评论(0) 推荐(0) 编辑
摘要:参考资料:      [ 1、程序员编程艺术第二十五章 ][1]      [ 2、勇幸的博客 ][2] 二分查找除了参考以下代码外,参考lower_bound()upper_bound()两个函数的 阅读全文
posted @ 2016-07-21 17:38 zxzhang 阅读(290) 评论(0) 推荐(1) 编辑
摘要:参考资料:[传送门][1] 并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?) 来看一个实例,杭电1232畅通工程 首先在地图上给你若干个城镇,这些城 阅读全文
posted @ 2016-07-05 10:16 zxzhang 阅读(490) 评论(0) 推荐(0) 编辑
摘要:1 2 阅读全文
posted @ 2016-05-18 20:15 zxzhang 阅读(234) 评论(0) 推荐(0) 编辑
摘要:问题描述: n条棍子组成一个三角形,使得三角形周少最大。 方法一: 暴力解则算法复杂度为O(n^3) 方法二: 从大到小将棍子排序,然后依次检查棍子是否满足A const int MAX_N=105; int main() { int n,i,j,sum=0; int ans[MAX_N]; sca 阅读全文
posted @ 2016-02-20 10:57 zxzhang 阅读(853) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示