递归
文章平均质量分 65
wnjason
这个作者很懒,什么都没留下…
展开
-
LeetCode---Climbing Stairs
题目大意: 有n级台阶,一次可以上两阶也可以一次上一阶,问登上n级台阶共有多少种方法。 算法思想: 设a[n]表示n级台阶的所有方法,则走道这一级台阶可由第n-1阶登上,也可由第n-2阶台阶登上。从而形成一个递推关系a[n]=a[n-1]+a[n-2],当n=1时a[1]=1,当n=2时a[2]=2,通过此递推关系可得a[n].为了简单起见,这里采用滚动数组的方法,省略数组a[]. 代码如原创 2015-10-08 12:51:04 · 239 阅读 · 0 评论 -
LeetCode---Happy Number
题目大意:给出一个数,用其每位上的数字平方的和来替代这个数,一直循环知道数为1停止循环,或者循环一个周期后停止。如果停止时n是1则返回true,否则返回false。 算法思想: 首先,将所给数用每位数字上的平方和计算出来替换它,然后递归判断该数是否是happy number。注意 这里使用了一个flag标记,初始时使每个数都进行一次平方和替换,之后将其置为true,用来开启递归终止的判断条件。原创 2015-10-09 15:59:00 · 191 阅读 · 0 评论 -
LeetCode---Add Digits
题目大意:给出一个非负整数,重复相加其各位数字直至相加之和小于10. 算法思想: 采用递归,当num 代码如下: class Solution { public: int addDigits(int num) { if(num<10) return num; return addDigits(num%10+num/10); } };原创 2015-09-21 16:39:08 · 257 阅读 · 0 评论 -
LeetCode---Same Tree
题目大意: 给出两颗二叉树,判断他们是否相等。相等的二叉树具有相同的结构和节点元素值。 算法思想: 递归。让节点都非空的时候返回(p->val==q->val)&&isSameTree(p->left,q->left)&&isSameTree(p->right, q->right)的布尔值,当节点都为空的时候返回True,否则返回false. 代码如下: /** * Definitio原创 2015-09-21 17:41:07 · 258 阅读 · 0 评论 -
LeetCode---Convert Sorted List to Binary Search Tree
题目大意:给出一个已排好序的升序链表,将其转化为一颗高度平衡的二叉搜索树。 算分思想: 1.遍历一遍链表,将链表中的元素放在容器中。 2.采用分治法将一个链表分为两半,一半对应BST的左子树,一半对应BST的右子树。 3.递归生成转换好的二叉搜索树(BST)。 代码如下: /** * Definition for singly-linked list. * struct ListN原创 2015-10-14 20:41:37 · 387 阅读 · 0 评论 -
LeetCode---Construct Binary Tree from Inorder and Postorder Traversal
题目大意:给出二叉树的中序和后序遍历结果,构造出该二叉树。 算法思想: 1.整体思想同由前序和后序构造二叉树不的差不过。LeetCode---Convert Sorted Array to Binary Search Tree 2.根节点的位置由前序的第一个变为后序的最后一个,只需要重新计算左右子树的区间。 代码如下: /** * Definition for a binary tre原创 2015-10-30 14:10:44 · 330 阅读 · 0 评论 -
LeetCode---Convert Sorted Array to Binary Search Tree
题目大意:给出一个排序的数组,将其转化为高度平衡的二叉树。 算法思想: 1.将数组分成3部分,中间位置是二叉树的根节点,左半部分则是二叉树的左子树,右半部分则是二叉树的右子树。 2.递归转化数组为二叉树。 代码如下: /** * Definition for a binary tree node. * struct TreeNode { * int val; *原创 2015-10-29 15:33:08 · 314 阅读 · 0 评论 -
Replace '*'of string
题目大意:给出一个字符串,该字符串包含若干个'*',每个'*'都可以用0或1替换,输出所有的替换方案。 算法思想: 采用递归,采用索引表示当前遍历字符的位置,如果其等于字符串的长度则输出。如果当前遍历到的字符为'*'则分别用0或1替换然后递归的输出所有可行方案,否则不进行替换递归寻找可行方案。 代码如下: #include #include using namespace std;原创 2015-12-30 22:23:55 · 354 阅读 · 0 评论