Fork me on GitHub

随笔分类 -  算法与数据结构

摘要:著名的模拟退火算法,它是一种基于蒙特卡洛思想设计的近似求解最优化问题的方法。 一点历史——如果你不感兴趣,可以跳过 美国物理学家 N.Metropolis 和同仁在1953年发表研究复杂系统、计算其中能量分布的文章,他们使用蒙特卡罗模拟法计算多分子系统中分子的能量分布。这相当于是本文所探讨之问题的开 阅读全文
posted @ 2016-11-20 23:54 ranjiewen 阅读(87585) 评论(8) 推荐(9)
摘要:五大常用算法:分治、动态规划、贪心、回溯和分支界定 这五种算法引出了很多问题。慢慢的更新链接! 动态规划的五个典型算法:动态规划 1.最大连续子序列之和 2.数塔问题(二叉树从上往下遍历最大和问题) 3.01背包问题 4.最长递增子序列(LIS) 5.最长公共子序列(LCS) //最长公共子序列(L 阅读全文
posted @ 2016-11-20 23:08 ranjiewen 阅读(1325) 评论(0) 推荐(0)
摘要:虽然二叉树的操作很常见,但是认真写写熟悉很重要,特别是typedef, 阅读全文
posted @ 2016-10-07 21:33 ranjiewen 阅读(1480) 评论(0) 推荐(0)
摘要:今天跟着左老师的视频,理解了四种复杂度为 O(N*log(N))的排序算法,以前也理解过过程,今天根据实际的代码,感觉基本的算法还是很简单的,只是自己写的时候可能一些边界条件,循环控制条件把握不好。 阅读全文
posted @ 2016-10-04 15:30 ranjiewen 阅读(714) 评论(0) 推荐(0)
摘要:学习编程也有一段时间了,但是总是感觉,自己缺少一些什么东西。编程一味的学习照着别人写的习惯,没有自己的思想,是不能有质的提升的。总是感觉自己不能做什么,对待代码还是缺少基本的实现的能力,更不用说什么技巧算法了。还需要的大量的联系。 我打算好好把数据结构的算法,实现以下,总是感觉自己,看起来会了,但是 阅读全文
posted @ 2016-09-20 14:16 ranjiewen 阅读(277) 评论(2) 推荐(0)
摘要:层次遍历二叉树,编程之美上看过解法,然后在练习了一下。用递归和vector,队列实现了,然后加上了测试函数,测试函数的二叉树创建方法待改进。 阅读全文
posted @ 2016-09-17 12:15 ranjiewen 阅读(2041) 评论(0) 推荐(0)
摘要:学习编程也有一段时间了,但是总是感觉,自己缺少一些什么东西。编程一味的学习照着别人写的习惯,没有自己的思想,是不能有质的提升的。总是感觉自己不能做什么,对待代码还是缺少基本的实现的能力,更不用说什么技巧算法了。还需要的大量的联系。 我打算好好把数据结构的算法,实现以下,总是感觉自己,看起来会了,但是 阅读全文
posted @ 2016-09-10 19:43 ranjiewen 阅读(380) 评论(0) 推荐(0)
摘要:C++实现最长公共子序列和最长公共子串 找工作知识储备(2) 数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串 最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离 115. Distinct Sub 阅读全文
posted @ 2016-09-08 18:32 ranjiewen 阅读(1554) 评论(0) 推荐(0)
摘要:一,普通的Hash方式 在介绍分布式哈希算法之前,先了解下普通的Hash是如何实现的。JDK中的java.util.HashMap类就实现了一个哈希表,它的特点有:①创建哈希表(HashMap)需要先指定大小,即默认创建一个能够存储多少个元素的哈希表,它的默认大小为16。 ②当不断地向HashMap 阅读全文
posted @ 2016-08-12 16:09 ranjiewen 阅读(746) 评论(0) 推荐(0)
摘要:1.数独游戏解析 .... 阅读全文
posted @ 2016-08-04 21:21 ranjiewen 阅读(255) 评论(0) 推荐(0)
摘要:概述经典排序算法系列:http://www.cnblogs.com/kkun/archive/2011/11/23/2260312.html 参考:http://blog.csdn.net/hguisu/article/details/7776068 排序有内部排序和外部排序,内部排序是数据记录在内 阅读全文
posted @ 2016-07-24 15:39 ranjiewen 阅读(199) 评论(0) 推荐(0)
摘要:求二叉树叶子结点的个数,注意创建方法! 阅读全文
posted @ 2016-07-21 11:23 ranjiewen 阅读(617) 评论(0) 推荐(0)
摘要:动态规划的介绍 动态规划 所有题型的总结 动态规划 动态规划 所有题型的总结 动态规划 动态规划一般也只能应用于有最优子结构的问题。最优子结构的意思是局部最优解能决定全局最优解(对有些问题这个要求并不能完全满足,故有时需要引入一定的近似)。简单地说,问题能够分解成子问题来解决。 基本思想及其与分治法 阅读全文
posted @ 2016-07-18 00:09 ranjiewen 阅读(719) 评论(0) 推荐(0)
摘要:Treap树算是一种简单的优化策略,这名字大家也能猜到,树和堆的合体,其实原理比较简单,在树中维护一个"优先级“,”优先级“ 采用随机数的方法,但是”优先级“必须满足根堆的性质,当然是“大根堆”或者“小根堆”都无所谓,比如下面的一棵树: 从树中我们可以看到: ①:节点中的key满足“二叉查找树”。 阅读全文
posted @ 2016-06-25 23:29 ranjiewen 阅读(339) 评论(0) 推荐(0)
摘要:最长公共子序列,英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。而最长公共子串(要求连续)和最长公共子序列是不同的. 最长公共子序列是一个十 阅读全文
posted @ 2016-06-04 20:43 ranjiewen 阅读(20897) 评论(1) 推荐(2)
摘要:看来几篇博客,自己还没有实践 参考: 参考:http://www.cnblogs.com/yanghuahui/archive/2012/04/15/2451076.html http://www.cnblogs.com/ligang305/archive/2012/08/25/2656343.ht 阅读全文
posted @ 2016-04-24 23:13 ranjiewen 阅读(1501) 评论(1) 推荐(0)
摘要:Trie树 Trie树也称字典树,因为其效率很高,所以在在字符串查找、前缀匹配等中应用很广泛,其高效率是以空间为代价的。 一.Trie树的原理 利用串构建一个字典树,这个字典树保存了串的公共前缀信息,因此可以降低查询操作的复杂度。 下面以英文单词构建的字典树为例,这棵Trie树中每个结点包括26个孩 阅读全文
posted @ 2016-04-24 20:54 ranjiewen 阅读(272) 评论(0) 推荐(0)
摘要:1.引子 中国有一句古话,叫做“不撞南墙不回头",生动的说明了一个人的固执,有点贬义,但是在软件编程中,这种思路确是一种解决问题最简单的算法,它通过一种类似于蛮干的思路,一步一步地往前走,每走一步都更靠近目标结果一些,直到遇到障碍物,我们才考虑往回走。然后再继续尝试向前。通过这样的波浪式前进方法,最 阅读全文
posted @ 2016-04-20 20:24 ranjiewen 阅读(2041) 评论(0) 推荐(1)
摘要:经常提到矩阵快速幂,今天研究了一下,就是将问题转化为二进制离散化,巧妙地减少运算量。 矩阵的快速幂是用来高效地计算矩阵的高次方的。将朴素的o(n)的时间复杂度,降到log(n)。 一般一个矩阵的n次方,我们会通过连乘n-1次来得到它的n次幂。但做下简单的改进就能减少连乘的次数,方法如下: 把n个矩阵 阅读全文
posted @ 2016-04-05 10:53 ranjiewen 阅读(619) 评论(0) 推荐(0)
摘要:啥是二叉查找树 在数据结构中,有一个奇葩的东西,说它奇葩,那是因为它重要,这就是树。而在树中,二叉树又是当中的贵族。二叉树的一个重要应用是它们在查找中的应用,于是就有了二叉查找树。 使二叉树成为一颗二叉查找树,需要满足以下两点: 对于树中的每个节点X,它的左子树中所有项的值都要小于X中的项; 对于树 阅读全文
posted @ 2016-04-01 11:27 ranjiewen 阅读(1592) 评论(0) 推荐(0)