摘要: 思路: 递归。 利用栈进行遍历。对于中序遍历,首先遍历左子树, 然后是根节点,最后才是右子树,所以我们需要用stack记录每次遍历的根节点, 当左子树遍历完成之后,从stack弹出根节点,得到其右子树,开始新的遍历。(参考的一个文档,链接找不到了。。) 直接遍历,以后写。。 阅读全文
posted @ 2017-06-15 14:57 UniMilky 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 思路: 递归 利用栈进行遍历。 直接遍历,以后写。。 阅读全文
posted @ 2017-06-15 11:06 UniMilky 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 思路 递归 阅读全文
posted @ 2017-06-15 10:42 UniMilky 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 思路: 递归。 / Definition for a binary tree node. struct TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) : val(x), left(NULL), right(NUL 阅读全文
posted @ 2017-06-15 09:06 UniMilky 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 思路: 和Subsets类似,因为数组中有重复元素,所以用set存储结果,相当于正常遍历然后去掉了重复。 class Solution { public: vector subsetsWithDup(vector& nums) { sort(begin(nums),end(nums)); vecto 阅读全文
posted @ 2017-06-14 14:06 UniMilky 阅读(69) 评论(0) 推荐(0) 编辑
摘要: 思路: dfs,每个元素有两种选择,选或者不选。 class Solution { public: vector subsets(vector& nums) { sort(begin(nums),end(nums)); vector res; vector tmp; dfs(nums,0,res,t 阅读全文
posted @ 2017-06-14 09:34 UniMilky 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 思路: 从后向前赋值,这样就可以避免移动数组元素。 "参考" 阅读全文
posted @ 2017-06-14 08:19 UniMilky 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 思路: 两个指针,比Remove Duplicates from Sorted Array多了一个count,记录是否超过两次。直接贴代码。 class Solution { public: int removeDuplicates(vector& nums) { if(nums.size() 阅读全文
posted @ 2017-06-13 22:10 UniMilky 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 思路: dfs,重点写在注释里面。这道题做了好久,以后不做无意义的尝试,想好了再改,调试。 阅读全文
posted @ 2017-06-13 10:14 UniMilky 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 思路: 设置两个指针red,blue,遇到0就交换到前面,red++,i++,遇到blue就交换到后面,因为red前面已经遍历过,所以交换red时需要i++,但是交换blue只需要blue++。(描述的好乱啊,还是贴上分析的好的博客吧。。) "参考" class Solution { public: 阅读全文
posted @ 2017-06-12 09:52 UniMilky 阅读(170) 评论(0) 推荐(0) 编辑