- 博客(15)
- 收藏
- 关注
原创 贪心算法总结
贪心算法:在求最优解问题的过程中,从问题的初始状态出发,依据某种贪心标准,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解。注意:贪心算法不是从整体上考虑问题,它所做出的选择只是在某种意义上的局部最优解。基本思想:通常以自顶向下的方式进行,以迭代的方式作出相继的贪心选择,每一次的贪心选择将所求问题简化为规模更小的子问题。一般流程://A是问题的输入集合即候选集
2017-10-09 20:07:39 428
原创 回溯算法总结
回溯法又称为试探法,可以系统的搜索一个问题的所有解或任一解。 适用情况:当需要找出问题的解集或者要求回答什么解是满足某些约束条件的最佳解。一般步骤:(1) 针对给定的问题,明确问题的解空间; (2) 确定易于搜索的解空间结构; (3) 以深度优先方式搜索解空间,并且在搜索过程中用剪枝函数避免无效搜索。经典例子(
2017-10-09 14:39:25 609
原创 680. Split String
描述:Give a string, you can choose to split the string after one character or two adjacent characters, and make the string to be composed of only one character or two characters. Output all possible r
2017-09-28 17:02:29 432
原创 46. 主元素
描述:给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。注意,可以假设数组是非空的,且主元素总是存在于数组中。样例:给出数组[1,1,1,1,2,2,2],返回 1。要求:时间复杂度为O(n),空间复杂度为O(1)。
2017-09-25 20:34:27 290
原创 82. 落单的数
描述:给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。样例:给出 [1,2,2,1,3,4,3],返回 4。要求:时间复杂度为O(n),空间复杂度为O(1)。标签:贪心思路:利用了异或位运算的性质,即:一个数与自身异或的结果为0;异或满足交换律。遍历数组中的每一个元素,并将其进行异或,异或结果即为只出现一次的那个
2017-09-25 20:30:24 212
原创 44.最小子数组
描述:给定一个整数数组,找到一个具有最小和的子数组。返回其最小和。注意事项:子数组最少包含一个数字。样例:给出数组[1, -1, -2, 1],返回 -3。标签:贪心 数组思路:累加和tem,最小值sum如果tem>0且tem如果tem与sum比较, 返回最小值。代码:class Solut
2017-09-21 17:22:46 278
原创 41.最大子数组
描述:给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。注意事项 子数组最少包含一个数。样例:给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6。要求:时间复杂度为O(n)。标签:贪心 数组思路:累加和tem,最大值sum如果tem如果tem>0,继续加
2017-09-21 17:05:28 283
原创 245. 子树
描述:有两个不同大小的二叉树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法,判定 T2 是否为 T1的子树。注意事项 :若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 是 T1 的子树。也就是说,如果在 T1 节点 n 处将树砍断,砍断的部分将与 T2 完全相同。样例:下面的例子中 T2 是 T1 的子树: 1
2017-09-14 17:32:58 250
原创 177. 把排序数组转换为高度最小的二叉搜索树
描述:给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。样例:给出数组 [1,2,3,4,5,6,7], 返回 4 / \ 2 6 / \ / \1 3 5 7标签:递归 二叉树思路:采用中间值来作为二叉树的根节点,将原数组分成左右两个新数组;递归的对这两个新数组进行相同的处理。对于每一
2017-09-14 17:22:37 254
原创 22.平面列表
描述:给定一个列表,该列表中的每个要素要么是个列表,要么是整数。将其变成一个只包含整数的简单列表。注意事项 :如果给定的列表中的要素本身也是一个列表,那么它也可以包含列表。样例:给定 [1,2,[1,2]],返回 [1,2,1,2]。给定 [4,[3,[2,[1]]]],返回 [4,3,2,1]。标签:递归思路:对一个列表进行判断,出口是一个只包含整数的简单
2017-09-14 17:21:14 320
原创 93.平衡二叉树
描述:给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。 样例:给出二叉树 A={3,9,20,#,#,15,7}, B={3,#,20,15,7}A) 3 B) 3 / \ \ 9 20
2017-09-14 16:59:36 364
原创 97.二叉树的最大深度
描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的距离。样例:给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5这个二叉树的最大深度为3.标签:递归 二叉树思路:遍历每个节点,返回该节点左右子树中深度较大的一个。代码:/** * Definition of TreeNode:
2017-09-14 16:56:42 221
原创 68.二叉树的后序遍历
描述:给出一棵二叉树,返回其节点值的后序遍历。样例:给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [3,2,1]。标签:递归 二叉树 遍历思路:首先遍历左子树,然后遍历右子树,最后访问根结点。在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根节点。 若二叉树为空则结束返回,否则:(
2017-09-14 16:41:04 229
原创 67.二叉树的中序遍历
描述:给出一棵二叉树,返回其中序遍历。样例:给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,2,3]。标签:递归 二叉树 遍历思路:首先遍历左子树,然后访问根结点,最后遍历右子树。在遍历左、右子树时,仍然先遍历左子树,然后访问根节点,最后遍历右子树。 若二叉树为空则结束返回,否则:(1)中序
2017-09-14 16:39:47 236
原创 66.二叉树的前序遍历
描述:给出一棵二叉树,返回其节点值的前序遍历。样例:给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,2,3]。标签:递归 二叉树 遍历思路:首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根节点,然后遍历左子树,最后遍历右子树。 若二叉树为空则结束返回,否则:(1
2017-09-14 16:28:41 220
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人