摘要:"幸运的数字Online Judge" 一个袋子里面有n个球,每个球上面都有一个号码(拥有相同号码的球是无区别的)。如果一个袋子是幸运的当且仅当所有球的号码的和大于所有球的号码的积。 例如:如果袋子里面的球的号码是{1, 1, 2, 3},这个袋子就是幸运的,因为1 + 1 + 2 + 3 1 1 阅读全文
二叉搜索树与中序遍历的缘分
2016-08-03 21:31 by shuaihanhungry, 7809 阅读, 0 推荐, 收藏, 编辑
摘要:二叉搜索树一个很重要的特性就是:树中任何结点的左子树中所有结点的值均比该结点小,右子树中所有结点的值均比该结点大。对二叉搜索树进行中序遍历即得到一个递增排序的序列。 检查一个树是否是二叉搜索树可以使用中序遍历,根据递增排序的序列生成二权搜索树也可以使用中序遍历。往往使用中序遍历来解决二叉搜索树的问题 阅读全文
路径寻找——八数码问题
2016-08-03 11:36 by shuaihanhungry, 672 阅读, 0 推荐, 收藏, 编辑
摘要:路径寻找问题可以转换为隐式图的广度遍历,目的是找到一条从初始状态到最终状态的最优路径,它不同于回溯法那样找到一个符合某些要求的解(如N皇后问题,数独问题等),回溯法是在深度遍历中进行剪枝。还要注意的是路径寻找问题是图的广度遍历不是树的广度遍历,树的广度遍历不需要判重,而图的广度遍历是需要判重的,如果 阅读全文
LeetCode Database题解
2016-08-01 21:41 by shuaihanhungry, 162 阅读, 0 推荐, 收藏, 编辑
摘要:"175. Combine Two Tables" 使用外连接即可。 Write your MySQL query statement below select FirstName, LastName, City, State from Person left outer join Address 阅读全文
树转换为链表
2016-07-31 10:21 by shuaihanhungry, 2416 阅读, 0 推荐, 收藏, 编辑
摘要:二叉树的每个结点有两个指针,在不创建新结点的情况下,更改结点指针的指向可将二叉树转换为链表结构,二叉树中的左右结点变为链表中的左右结点。使用两个每个结点的两个指针可转换为双链表结构,只使用每个结点的右指针可转换为单链表结构。 1、若要把二叉搜索树转换为排序的双向链表,只需中序遍历树中的每个结点,遍历 阅读全文
《这就是搜索引擎》笔记——网络爬虫、搜索引擎索引、检索模型与搜索排序
2016-07-30 15:16 by shuaihanhungry, 1164 阅读, 0 推荐, 收藏, 编辑
摘要:网络爬虫 爬虫分为3种类型:批量型爬虫(明确的抓取范围和目标),增量型爬虫(新增网页、网页被删除、网页内容更改),垂直型爬虫(特定主题、特定行业)。 优秀爬虫特性:从开发者角度来说需要考虑,高性能(抓取速度),可扩展性(分布式运行),健壮性(网页HTML编码不规范、服务器死机、爬虫陷阱、重新启动爬虫 阅读全文
动态规划再思考
2016-07-22 16:23 by shuaihanhungry, 501 阅读, 0 推荐, 收藏, 编辑
摘要:动态规划一般用来求解最优化问题。需要注意的是它与贪心算法的区别,贪心算法也是用来解决最优化问题的。动态规划和贪心算法都需要满足最优子结构特征,不同的是动态规划还需要满足重叠子问题特征,而贪心算法还需要满足当前最优解即是全局最优解的特征。 实现动态规划算法 1、描述最优解结构特征。做出第一个选择,并假 阅读全文
C++中的trivial解释
2016-07-20 10:36 by shuaihanhungry, 2713 阅读, 0 推荐, 收藏, 编辑
摘要:Trivial default constructor The default constructor for class T is trivial (i.e. performs no action) if all of the following is true: The constructor 阅读全文
深搜与广搜
2016-07-19 21:30 by shuaihanhungry, 585 阅读, 0 推荐, 收藏, 编辑
摘要:深搜 输入:如果是递归数据结构,如二叉树、单链表、集合,一般可以使用深搜,如果是非递归数据结构,如一维数组、二维数组、字符串、图,则使用深搜的概率要小一些。 输出:一定是要走到最深(如叶子结点)才能得到一个解。一般有三种情况:求可行解的个数,求一个可行解,求所有可行解。 求解:求可行解个数,如: " 阅读全文
生成排列与生成子集
2016-07-17 18:50 by shuaihanhungry, 496 阅读, 0 推荐, 收藏, 编辑
摘要:排列或子集的生成,可以使用递归构造,也可以直接生成。直接生成的方法时间复杂度高,无法进行适当的剪枝,如果想减小时间复杂度,可以使用回溯法进行递归构造。 1、排列的递归构造很简单,伪码如下: print_permutation(序列R,集合S) if(S为空) print 序列R return for 阅读全文