![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
solve
jayn--
蟹在剥我的壳,代码在写我
展开
-
反转二叉树(Invert Binary Tree)
首先心疼 Max Howell 一秒钟。首先,递归。return NULL , if root is NULLswap left and rightrecur left child and right childTreeNode* invertTree(TreeNode* root) { if(root) { invertTree(ro原创 2017-09-06 16:57:24 · 334 阅读 · 0 评论 -
最长连续子序列和
问题描述:给一个数组,找出和最大的子数组 例如: {3, -4, 5, -2, 3, 6, -3} 最大为: 5 + -2 + 3 + 6 = 12首先分析一下问题,发现可以暴力一下,从每一个数开始向后累加,找到最大的那个,复杂度为O(n^2)。再稍微仔细一点,可以看到如果累加开始的第一个数为负数,那么这个数无论加后边是什么数,必定要小于后边累加的值,既然如此,问题可以推广一下,如果之前累加的原创 2017-09-22 21:14:36 · 616 阅读 · 0 评论 -
Binary Tree Tilt
题目:计算各节点左右子树的差值的绝对值之和。 后序遍历原创 2017-09-14 21:04:48 · 547 阅读 · 0 评论 -
Diameter of Binary Tree
求树的直径,其实就是对于每个节点左右子树深度和的最大值。 例如: 左边深度加右边深度,可知为3。但要注意下面的情况: 这时有个子节点的深度和已经超过根节点深度和。============================= 想法是对于每个节点的左右子树深度相加,取其中的最大值:class Solution {public: int diameterOfBinaryTree(T原创 2017-09-15 11:02:30 · 132 阅读 · 0 评论 -
两个栈实现队列
first idea in my mind is 把第二个栈作为辅助栈,要用的时候家清空,第一个栈作为主要的元素存放点。class Solution{public: void push(int node) { stack1.push(node); } int pop() { while(!stack2.empty())//清空辅助栈原创 2017-09-16 10:41:24 · 133 阅读 · 0 评论 -
dp(1): 跳台阶问题
问题:共n层台阶,每次只能上1级或者2级,问有多少种上台阶的方法。首先分析一下题目,一般这种问题我都会先找一下规模最小的数值来分析一下,可以看到,上一层的走法是1种(1),上2层的走法是2种(11, 2),三层有3种(12, 21, 111),四层有5种(1111, 22, 211, 121, 112)……偷偷发现好像是斐波那契序列。。那要怎么样证明后边的数呢?原创 2017-09-16 12:23:03 · 356 阅读 · 0 评论 -
反转链表
第一个想到的还是栈,毕竟翻转这种事情。。class Solution {public: ListNode* ReverseList(ListNode* pHead) { if(!pHead) return NULL; stack<ListNode*> s; while(pHead) {原创 2017-09-19 10:32:36 · 360 阅读 · 0 评论