
递归
leagalhigh
never give up!
展开
-
摊平嵌套列表-lintcode
递归,queue,const vector; 这道题应该:看懂题意;想到用queue;还有就是函数传入的参数不是const vector,但是如果传入的是const vector的话就会出错。C++代码:/** * // This is the interface that allows for creating nested lists. * // You should not im原创 2017-02-15 23:57:05 · 567 阅读 · 0 评论 -
leetcode-606. Construct String from Binary Tree
考察点:递归,二叉树; 思路:注意初始情况就行。 C++代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL原创 2017-10-12 10:29:38 · 175 阅读 · 0 评论 -
Add to List 316. Remove Duplicate Letters
考察点:递归,C++字符串操作,贪心; 思路:每一次递归,首先用贪心法找到left_most位置的字符,就是找到字母数尽可能最小的位置(‘a’的话最好),遇到只有一个字母的位置时停下扫描,break;然后将s的left_most位置之前的字符删掉,后面重复的字符也删掉,最后返回空字符或者left_most位置的字符加下一个递归的结果。C++代码:class Solution {public:原创 2017-10-01 16:41:46 · 176 阅读 · 0 评论 -
236. Lowest Common Ancestor of a Binary Tree
考察点:DFS; 思路:首先根据一个搜索出到两个指针所指对象的path,存放在vector中,然后反转该vector,前面的元素是从根节点出发的节点路径,找出第一个不同的元素,返回之前的元素就可; C++ 代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNod原创 2017-09-25 14:25:12 · 179 阅读 · 0 评论 -
leecode-385. Mini Parser
考察点:stack思想,类思想,C++function用法,等C++函数用法。 思路:首先创建一个外部的总对象,然后遍历字符串,根据是否是[ 或者 ]来进行入栈和出栈来形成一个类链表。最后输出链表的头部。 C++ 代码:/** * // This is the interface that allows for creating nested lists. * // You should原创 2017-09-25 13:41:40 · 166 阅读 · 0 评论 -
leetcode-51. N-Queens
考察点:回溯,递归,矩阵处理; 思路:先将一个矩阵都置为’.’然后开始针对第i行递归,满足row==n条件push_back;然后针对第i行,一次判断第j列是否valid。 C++代码:class Solution {public: vector<vector<string>> solveNQueens(int n) { using namespace std;原创 2017-07-24 01:02:05 · 199 阅读 · 0 评论 -
leetcode-50. Pow(x, n)
考察点:递归,二分法; 思路:这道题是求幂的递归,二分的经典例题。其中如果int为INT_MIN,这个需要特殊对待。 C++代码:class Solution {public: double myPow(double x, int n) { if (n == 0 ) return 1.0; if(n == INT_MIN)原创 2017-07-02 21:27:15 · 230 阅读 · 0 评论 -
372. Super Pow
考察点:递归,幂运算; 思路: superPow看成一个模块,它输入一个基数和数组,求出结果;但是它是递归地去求结果,每次去掉最后一位,然后利用powmod这个功能模块函数,返回最后结果。这个递归的思想想到的话可以极大地减少时间复杂度。C++代码:class Solution { const int base = 1337; int powmod(int a, int k) //a原创 2017-07-02 20:40:16 · 281 阅读 · 0 评论 -
leetcode-623. Add One Row to Tree
考察点:递归, 二叉树; 思路:递归思想;很重要的是help函数的处理,它要返回指针,而且它的功能是返回最终的root,这个root是满足条件的root。当然,help函数里还要递归,确定好为NULL的条件和depth==curdepth这两个结束条件就ok了。 C++代码:/** * Definition for a binary tree node. * struct TreeNode原创 2017-06-18 12:24:48 · 424 阅读 · 0 评论 -
leetcode-241. Different Ways to Add Parentheses
考察点:递归,分治。 思路:这道题是典型的递归,分治题目。首先应该明确主函数是什么作用:它接受一个string,返回由这个string组成的所有种计算结果vector。因此,可以遍历一遍字符串,找出运算符将字符串分成两个字符串,然后分别用该函数递归。然后将结果存入ret数组里。在for循环外,如果ret是空的,说明该字符串就是一个完整的数字,直接返回它的整数化结果就行。这也是最终判断条件在函数最后原创 2017-05-01 10:44:25 · 270 阅读 · 0 评论 -
leetcode-101-Symmetric Tree
这是一个简单的递归题,当然,也可以通过栈实现递归的效果。思路: 我想说的是它的递归有点不同于常见的递归,常见的递归是每次传入一个节点,要么先序遍历,要么中序遍历,要么后续遍历,但这道题应该传入两个节点,因为它是要对称嘛,必须站在宏观的角度去看,遍历完所有节点才可以返回最终结果,到底是不是对称的。下面是我的C++代码跟一个递归代码:/** * Definition for a binary t原创 2017-04-12 09:44:53 · 485 阅读 · 0 评论 -
leetcode- Add to List 669. Trim a Binary Search Tree
考察点:二叉树, 递归; 思路:如果root的val比L还要小,就应该trim掉root左边的枝,所以返回对root右边的递归;如果root的val比R还要大,返回对root左边的递归;如果root的val在[L, R]中间, 就分别对root的left和right赋值。这个思想很巧妙,不好想。 C++代码:/** * Definition for a binary tree node. *原创 2017-10-13 15:14:18 · 278 阅读 · 0 评论