solve
jayn--
蟹在剥我的壳,代码在写我
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
反转二叉树(Invert Binary Tree)
首先心疼 Max Howell 一秒钟。首先,递归。 return NULL , if root is NULL swap left and right recur left child and right child TreeNode* invertTree(TreeNode* root) { if(root) { invertTree(ro原创 2017-09-06 16:57:24 · 410 阅读 · 0 评论 -
最长连续子序列和
问题描述:给一个数组,找出和最大的子数组 例如: {3, -4, 5, -2, 3, 6, -3} 最大为: 5 + -2 + 3 + 6 = 12首先分析一下问题,发现可以暴力一下,从每一个数开始向后累加,找到最大的那个,复杂度为O(n^2)。再稍微仔细一点,可以看到如果累加开始的第一个数为负数,那么这个数无论加后边是什么数,必定要小于后边累加的值,既然如此,问题可以推广一下,如果之前累加的原创 2017-09-22 21:14:36 · 687 阅读 · 0 评论 -
Binary Tree Tilt
题目:计算各节点左右子树的差值的绝对值之和。 后序遍历原创 2017-09-14 21:04:48 · 631 阅读 · 0 评论 -
Diameter of Binary Tree
求树的直径,其实就是对于每个节点左右子树深度和的最大值。 例如: 左边深度加右边深度,可知为3。但要注意下面的情况: 这时有个子节点的深度和已经超过根节点深度和。============================= 想法是对于每个节点的左右子树深度相加,取其中的最大值:class Solution { public: int diameterOfBinaryTree(T原创 2017-09-15 11:02:30 · 192 阅读 · 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 · 197 阅读 · 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 · 471 阅读 · 0 评论 -
反转链表
第一个想到的还是栈,毕竟翻转这种事情。。class Solution { public: ListNode* ReverseList(ListNode* pHead) { if(!pHead) return NULL; stack<ListNode*> s; while(pHead) {原创 2017-09-19 10:32:36 · 424 阅读 · 0 评论
分享