自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 [Leetcode]Reverse Linked List II

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *re

2013-07-04 20:13:46 357

原创 [Leetcode]Binary Tree Inorder Traversal without recursion

/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Soluti

2013-07-04 10:30:45 452

原创 卡塔兰数 Catalan Number

组合数学中有非常多的组合结构可以用卡塔兰数来计数,下面是卡塔兰数的两个递推公式。其中有一类问题:不同构二叉树、不同构满二叉树、凸多边形三角化、乘法顺序不同构二叉树:Cn表示有n个节点组成不同构二叉树的方案数不同构满二叉树:Cn表示2n+1个节点组成的不同构满二叉树的方案数凸多边形三角化:Cn表示n+2边形三角化方案数乘法顺序:Cn表示

2013-06-29 16:06:58 829

原创 [Leetcode]Interleaving String

思路:刚开始的思路是从s3中一个个把字符拿出来,与s1和s2中的字符比较,如果匹配则去掉那个匹配的字符,但是问题是如果s1和s2的字符与s3中的都匹配呢?首先先到用递归,当都匹配时,递归的选择s1或者s2。但是这个递归有效率问题,有大量的重叠子问题,不用说,动态规划解决之。class Solution {public: bool isInterleave(string s1, str

2013-06-29 15:48:59 452

原创 [Leetcode]Validate Binary Search Tree

/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Soluti

2013-06-29 14:37:19 371

原创 [Leetcode]Binary Tree Level Order Traversal II

/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Soluti

2013-06-29 10:28:56 415

原创 [Leetcode]Binary Tree Zigzag Level Order Traversal

/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Soluti

2013-06-29 10:24:12 301

原创 [Leetcode]Binary Tree Level Order Traversal

/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Soluti

2013-06-29 10:12:16 356

原创 [Leetcode]Symmetric Tree

/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Soluti

2013-06-29 09:46:47 351

原创 [Leetcode]Same Tree

/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Soluti

2013-06-29 09:32:44 307

原创 [Leetcode]Convert Sorted Array to Binary Search Tree

/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Soluti

2013-06-28 11:28:35 359

原创 [Leetcode]Convert Sorted List to Binary Search Tree

思路:从链表来建树关键的在于找到中间节点,并且自底向上的来建立。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; *//** *

2013-06-28 11:22:57 347

原创 [Leetcode]Balanced Binary Tree

/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Soluti

2013-06-28 10:59:09 383

原创 [Leetcode]Minimum Depth of Binary Tree

/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Soluti

2013-06-28 10:48:34 396

原创 [Leetcode]Path Sum

/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Soluti

2013-06-28 10:41:35 368

原创 [Leetcode]Path Sum II

/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Soluti

2013-06-28 10:39:01 381

原创 [Leetcode]Flatten Binary Tree to Linked List

思路:递归/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class

2013-06-28 10:03:06 403

原创 [Tree]Postorder fashion&Preorder fashion

对于树来说很多操作或者处理都可以归结成Postorder fashion和Preorder fashion(top-down自顶向下的更新和button-up自底向上的更新)

2013-06-27 11:04:40 384

原创 [geeks]Linked complete binary tree & its creation

思路:层序遍历往往和优先队列结合在一起一、初始化队列,用新节点初始化root,将root enqueue()二、重复下列步骤,知道所有的节点插入    1、得到队首节点(不出队)        a) 如果该节点没有左子节点,该节点的左子节点为新节点        b) 否则 如果 该节点没有右子节点,该节点的右子节点为新节点    2、如果队首节点左右儿子节点都存在,则de

2013-06-26 16:53:51 425

转载 [geeks]Floor and Ceil from a BST

There are numerous applications we need to find floor (ceil) value of a key in a binary search tree or sorted array. For example, consider designing memory management system in which free nodes are ar

2013-06-26 15:15:57 1054

原创 [Tree]树与先序遍历

如果我们有一个先序遍历的数组或者一个链表,以它们来建立一棵树,但是又无法很好的划分左右子树,可以用下面的框架。 TreeNode *buildTree(vector &preorder, int &cur, int min, int max) { if(cur >= preorder.size()) return NULL; TreeNode *root = NULL; if(p

2013-06-26 15:04:16 444

原创 [Tree]树与中序遍历

对一棵二叉树进行中序遍历得到a0 a1...an...当遍历树时,如果处理当前节点时需要其中序遍历序列中前一个节点的信息,即访问an时需要an-1那么可以用下面的框架进行中序遍历。void fun(TreeNode *root, TreeNode* &prev){ if(root == NULL) return; fun(root->left, prev); //访问当前节点并

2013-06-26 14:36:30 391

原创 [Leetcode]Populating Next Right Pointers in Each Node II

思路:同Populating Next Right Pointers in Each Node/** * Definition for binary tree with next pointer. * struct TreeLinkNode { * int val; * TreeLinkNode *left, *right, *next; * TreeLinkNode(

2013-06-26 14:15:26 376

原创 [Leetcode]Populating Next Right Pointers in Each Node

思路:逐层处理/** * Definition for binary tree with next pointer. * struct TreeLinkNode { * int val; * TreeLinkNode *left, *right, *next; * TreeLinkNode(int x) : val(x), left(NULL), right(NULL), ne

2013-06-26 14:12:37 311

原创 [Leetcode]Distinct Subsequences

思路:计数问题往往用DPclass Solution {public: int numDistinct(string S, string T) { // Start typing your C/C++ solution below // DO NOT write int main() function vector > f(S.size

2013-06-26 14:09:32 431

原创 [剑指offer]用两个栈实现队列

思路:一个栈用来入队,另外一个栈用来出队#include #include #include #include #include using namespace std;int main(){ int n; while(cin>>n) { stack input, output; for(int i = 0; i < n; ++i) { string c

2013-06-25 17:06:30 344

原创 [剑指offer]重建二叉树

思路:递归建树#include #include #include #include #include using namespace std;struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {}}

2013-06-25 16:35:07 359

原创 [剑指offer]从头到尾打印链表

简单题:用栈或者递归

2013-06-25 15:38:17 464

原创 [剑指offer]替换空格

思路:与leetcode 里的 Merge Sorted Array相似#include #include #include #include using namespace std;int main(){ string s; while(getline(cin, s)) { int count = 0; for(int i = 0; i < s.size();

2013-06-25 15:34:18 377

原创 [Leetcode]Merge Sorted Array

思路:从后往前merge,这样可以不用额外的空间class Solution {public: void merge(int A[], int m, int B[], int n) { // Start typing your C/C++ solution below // DO NOT write int main() function

2013-06-25 14:38:44 336

原创 [geeks]Construct BST from given preorder traversal——iterative solution

步骤:1、建立一个空栈2、使preorder数组中的第一个元素为root,并把root推入栈中3、重复下面步骤直到遍历完preorder数组如果当前preorder数组中的元素大于栈中节点的值,pop栈顶元素,直到栈为空,或者栈顶节点的值大于preorder数组中的元素。令最后被pop出来的节点的右子树为当前元素,并将其push入栈。如果当前元素小于栈顶节点的值,那么令栈顶节点

2013-06-25 11:26:02 492

原创 [geeks]Construct BST from given preorder traversal

思路一:preorder数组的第一个元素为根,然后从左到右开始找第一个大于根的元素,递归的构造左右子树,时间复杂度O(n)。思路二:一边遍历preorder数组一边构造BSTstruct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(N

2013-06-25 10:41:29 468

原创 [geeks]Construct Full Binary Tree from given preorder and postorder traversals

思路:根据先序和后序遍历数据,递归的构造整棵树struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {}};class Solution {public: TreeNode *buildTree(ve

2013-06-25 09:30:39 515

转载 [Tree]If you are given two traversal sequences, can you construct the binary tree?

If you are given two traversal sequences, can you construct the binary tree?August 2, 2009It depends on what traversals are given. If one of the traversal methods is Inorder then the tree

2013-06-24 22:12:43 431

原创 [geeks]Two of the nodes of a Binary Search Tree (BST) are swapped. Fix (or correct) the BST

思路:同leetcode中Recover Binary Search Tree

2013-06-24 22:03:14 573

原创 [Leetcode]Recover Binary Search Tree

思路:如果我们可以用额外的数组得到中序遍历的结果,那么我么可以相对容易的解决这个问题。不用额外的空间,可以用O(N)的时间通过中序遍历整棵树来解决。对于每次访问到一颗子树,我们需要然它知道它的前一个节点。方法一:/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *

2013-06-24 21:57:12 411

原创 [剑指Offer]二维数组中的查找

思路:这题二维矩阵少了Leetcode中的一个限制,就是这一行的最左边的值并一定比前一行的最右边的值大。我们同样也是先找到所在行,然后在该行二分查找,但是定位所在行的方式需要改变。#include #include #include using namespace std;bool SearchMatrix(vector > &matrix, int target) { if(

2013-06-24 17:10:55 477

原创 [Leetcode]Search a 2D Matrix

思路:用经典的二分查找,先找到所在行,然后再找到所在列class Solution {public: bool searchMatrix(vector > &matrix, int target) { // Start typing your C/C++ solution below // DO NOT write int main() function

2013-06-24 15:42:48 380

原创 [Leetcode]Triangle

空间O(N^2)class Solution {public: int minimumTotal(vector > &triangle) { // Start typing your C/C++ solution below // DO NOT write int main() function for(int i = triangle

2013-06-24 10:25:08 381

原创 [Leetcode]Best Time to Buy and Sell Stock III

思路:III限制了只能进行两次交易,问题可以转化成在两个不重叠区间找到i和j(iclass Solution {public: int maxProfit(vector &prices) { // Start typing your C/C++ solution below // DO NOT write int main() function

2013-06-24 09:59:23 539

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除