随笔分类 -  算法

摘要:import java.util.*; public class Main{ public static void main(String[] Args){ Scanner scanner = new Scanner(System.in); String str1 = scanner.nextLine(); String str2... 阅读全文
posted @ 2017-03-31 23:14 mslog 阅读(130) 评论(0) 推荐(0)
摘要:解法一:通过排序,使其转化为lcs问题 解法二: 另一种方式是直接用DP求解,算法如下:时间复杂度为O(N^2) ①最优子问题 设lis[i] 表示索引为 [0...i] 上的数组上的 最长递增子序列。初始时,lis[i]=1,注意,在DP中,初始值是很重要的,它是整个算法运行正确的关键。而初始值 阅读全文
posted @ 2017-03-31 15:40 mslog 阅读(135) 评论(0) 推荐(0)
摘要:对于堆,其是一个完全二叉树的结构。如果是数组存储的话(索引值重0开始),其父节点的索引值为(i-1)/2,左孩子结点的索引为2*i+1,右孩子结点索引为2*i+2。 对堆的调整 建堆 堆排 阅读全文
posted @ 2017-03-09 21:13 mslog 阅读(149) 评论(0) 推荐(0)
摘要:基本思想:用标准的二叉树和一些额外信息来表示2-3树。 红链接将2-结点连接起来构成一个3-结点,黑链接则是2-3树中普通链接。 红黑树的自身特性: 1、结点的颜色一定是红色或黑色 2、树根的颜色为黑色 3、叶子结点为黑色(叶子结点为外部结点,是空结点) 4、某红结点,其左右孩子结点一定为黑结点 5 阅读全文
posted @ 2017-02-26 19:30 mslog 阅读(1780) 评论(0) 推荐(0)
摘要:算法的设计 关键在于记住其思想、步骤和使用条件 1、什么是分治法 当求解的问题较复杂或规模较大时,不能立刻得到原问题的解,但这些问题本身具有这样的特点,它可以分解为若干个与原问题性质相类似的子问题, 而这些子问题较简单可方便得到它们的解,因此通过合并这些子问题的解就可得到原问题的解。 2、应用分治法 阅读全文
posted @ 2017-02-23 18:41 mslog 阅读(715) 评论(0) 推荐(0)
摘要:递归的基本原理: 1 每一次函数调用都会有一次返回.当程序流执行到某一级递归的结尾处时,它会转移到前一级递归继续执行. 2 递归函数中,位于递归调用前的语句和各级被调函数具有相同的顺序.如打印语句 #1 位于递归调用语句前,它按照递 归调用的顺序被执行了 4 次. 3 每一级的函数调用都有自己的私有 阅读全文
posted @ 2017-02-22 21:39 mslog 阅读(264) 评论(0) 推荐(0)
摘要:算法: 1、以链表的形式表示每一个结点; 阅读全文
posted @ 2017-02-22 21:29 mslog 阅读(134) 评论(0) 推荐(0)