2017年11月5日

算法分析与设计论文

摘要: 1:递归算法 程序直接或间接调用自身的编程技巧称为递归算法(Recursion)。 递归算法是一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法。它通常把一个大型复杂的问题转化为一个与原问题类似的规模较小的问题来求解。 递归策略只需少量的代码就可描述出解题过程所需要的多次重复计算,大大减少 阅读全文

posted @ 2017-11-05 21:54 20153868 阅读(7258) 评论(0) 推荐(0)

2017年10月18日

递归

摘要: 递归总结: 递归要注意两点, 一个是递归的出口,就是递归到什么时候结束,一般是递归到一个很简单的出来的答案时停止,或者是自己设置的递归出口; 第二个就是递归的关系,lintcode的题大部分都是二叉树,像二叉树的深度、遍历,这个递归就是把左右子树的根节点作为根节点,从而向下递归,直到出口。 递归有时 阅读全文

posted @ 2017-10-18 21:26 20153868 阅读(180) 评论(0) 推荐(0)

平面列表

摘要: 给定一个列表,该列表中的每个要素要么是个列表,要么是整数。将其变成一个只包含整数的简单列表。 给定 [1,2,[1,2]],返回 [1,2,1,2]。 给定 [4,[3,[2,[1]]]],返回 [4,3,2,1]。 这个题就是保留最外面的列表,去掉其他列表,最终只剩下一个列表。 刚开始的代码: v 阅读全文

posted @ 2017-10-18 21:26 20153868 阅读(84) 评论(0) 推荐(0)

最小子数组

摘要: 给定一个整数数组,找到一个具有最小和的子数组。返回其最小和。 给出数组[1, -1, -2, 1],返回 -3 本题是求最小子数组,并返回最小和。刚开始不理解子数组的定义,后来知道了子数组必须是连续的,然后用贪心的算法解决。 class Solution {public: /* * @param n 阅读全文

posted @ 2017-10-18 21:26 20153868 阅读(120) 评论(0) 推荐(0)

最大子数组

摘要: 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。 给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6 最大字数组,和最小字数组的代码几乎一样。 class Solution {public: /* * @param nums: A 阅读全文

posted @ 2017-10-18 21:26 20153868 阅读(55) 评论(0) 推荐(0)

主元素

摘要: 给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。 You may assume that the array is non-empty and the majority number always exist in the array. 给出数组[1,1,1,1,2 阅读全文

posted @ 2017-10-18 21:26 20153868 阅读(266) 评论(0) 推荐(0)

贪心

摘要: 贪心的主要思想就是找最优,完成一件事有许多步骤,贪心就是每一步都保证最优,然后最终的结果也是最优。 从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快的地求得更好的解。当达到算法中的某一步不能再继续前进时,算法停止。 该算法存在问题: 不能保证求得的最后解是最佳的;不能用来求最大或最小解问题,只 阅读全文

posted @ 2017-10-18 21:25 20153868 阅读(114) 评论(0) 推荐(0)

平衡二叉树的构造

摘要: 平衡二叉树,题目如链接。 这个题可以用前面的二叉树的深度来解决,也就是写两个函数,一个用来计算二叉树的深度,另一个判断是否是平衡二叉树;然后递归到左右子树。 class Solution {public: /* * @param root: The root of binary tree. * @r 阅读全文

posted @ 2017-10-18 21:25 20153868 阅读(1483) 评论(0) 推荐(0)

二叉树的遍历

摘要: 二叉树的前序遍历,先根节点,然后左子树,最后右子树。 vector<int> v; vector<int> preorderTraversal(TreeNode * root) { // write your code here if(root!=NULL) { v.push_back(root-> 阅读全文

posted @ 2017-10-18 21:25 20153868 阅读(57) 评论(0) 推荐(0)

二叉搜索树

摘要: 得到一个A【n】的数组,首先要找中点A【m】,然后新建一个树,根节点就是中点,左子树就是A【0】-A【m-1】;右子树就是A【m+1】-A【n-1】;然后递归左子树和右子树,直到结束。。 class Solution {public: /** * @param A: A sorted (increa 阅读全文

posted @ 2017-10-18 21:25 20153868 阅读(93) 评论(0) 推荐(0)

导航