LeetCode
文章平均质量分 53
琳檬香草牛
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode:Populating Next Right Pointers in Each Node I,II 编程之美3.10
解答: 队列实现按排遍历class Solution {public:struct InvoLevelNode { TreeLinkNode *node; int level; InvoLevelNode(TreeLinkNode *p,int n):node(p),level(n){} InvoLevelNode(){}//重定义构原创 2013-05-13 16:44:13 · 638 阅读 · 0 评论 -
LeetCode:Remove Duplicates from Sorted Array I&&II
bug处我在处理时候从数组最后开始处理,则前面数据遭到了污染。class Solution {public: int removeDuplicates(int A[], int n) { // Start typing your C/C++ solution below // DO NOT write int main() function原创 2013-07-30 15:37:05 · 522 阅读 · 0 评论 -
Leetcode:Scramble String
dpsub[len][i][j] 表示s1从i开始与s2从j开始的长度为len是否为Scramble Stringclass Solution {public:bool sub[100][100][100]; bool isScramble(string s1, string s2) { if(s1.length()!=s2.length(原创 2013-07-23 21:37:04 · 614 阅读 · 0 评论 -
Leetcode:Minimum Window Substring
这道题目折腾死我了。。。最后参考大牛代码写成了,太容易写出bug了。思路很简单:两个指针,如果count没有达到tlength,则头指针继续往后扫描。当count等于tlength表示已经包含了所有的字符,则移动尾指针到不能缩短为止,也就是再缩短一个字符,则不能全部包含。class Solution {public: string minWindow(string S,原创 2013-08-01 13:15:37 · 579 阅读 · 0 评论 -
Leetcode:Set Matrix Zeroes
这是一道还比较容易出错的题目。不能用额外的空间,那我只能想到在原来数组上保存。如果matrix[i][j] ==0 则将 matrix[i][0]与matrix[0][j]置为0用于保存第i行和第j列全为0bug1: 第二次扫描时应该从i=1和j=1开始,如果从0开始则会对第一排,第一列数据污染。bug2:第一排,第一列是否全为0,应该用一个变量保存,如果只判断matrix原创 2013-08-01 17:44:55 · 572 阅读 · 0 评论 -
LeetCode水题
Partition List水过,顺序便利链表,每次发现比x小的节点p,则在p之前找到比x大的节点q插入,注意p、q为头结点情况。原创 2013-07-28 16:29:20 · 573 阅读 · 0 评论 -
Leetcode:Length of Last Word
考虑没周全class Solution {public: int lengthOfLastWord(const char *s) { // Start typing your C/C++ solution below // DO NOT write int main() function int len = strlen(s);原创 2013-08-03 12:13:25 · 490 阅读 · 0 评论 -
LeetCode:Permutation Sequence
我首先用vector进行保存,全部便利一遍,结果TLE了,不过遍历代码还是有参考价值的。class Solution {public:vector result;void search(int index,int max,int* A){ if(index==max) { strin原创 2013-08-03 11:38:35 · 658 阅读 · 0 评论 -
Leetcode:Largest Rectangle in Histogram
寻找直方图最大面积对于 index=i 往左寻找第一个比i低的直方图p 往右寻找第一个比i低的直方图q 则以height[i]为高度的面积为 (q-p+1)*height[i];直接遍历 超时了,可以用使用dp新建两个数组 left和right 。 left[i]保存 左边第一个比i低得直方图标签 转移方程有 (设left[0]=-1) int p = i-原创 2013-07-29 12:16:23 · 533 阅读 · 0 评论 -
LeetCode:Interleaving String
二维dpdp[i][j] 表示是否能有s1[0...i-1]和[s2[0....j-1]组成s3【0.....i+j-1】class Solution {public: bool isInterleave(string s1, string s2, string s3) { // Start typing your C/C++ solution below原创 2013-07-05 22:16:15 · 538 阅读 · 0 评论 -
Leetcode:Distinct Subsequences
动态规划:dp[i][j] 表示最优子结构。if(S[i] == T[j]) dp[i][j] = dp[i-1][j-1] ;//S[i-1]能组成多少种T[j-1];else dp[i][j] =1;dp[i][j] += dp[i-1][j];// S[i-1]可以组成多少种T[j];下面代码可以再进行一个空间优化,class S原创 2013-05-20 14:37:48 · 558 阅读 · 0 评论 -
LeetCode:Convert Sorted List to Binary Search Tree
寻找中间位置作为根节点,把根节点前面部分最后一个节点的next置为NULLclass Solution {public: TreeNode * sortList(ListNode *node) { if(node == NULL) return NULL; int len = 0; ListNode* p = node;原创 2013-05-21 10:10:56 · 597 阅读 · 0 评论 -
LeetCode:Minimum Depth of Binary Tree
宽搜class Solution {public: int minDepth(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function if(root == NULL)原创 2013-05-15 20:13:41 · 490 阅读 · 0 评论 -
Leetcode:Symmetric Tree
解题思路:根节点左子树做个旋转则为右子树(旋转是指所有节点左右孩子进行调换) 则每次判断左子树下每个位置节点是否与右子树相对应位置相同。class Solution {public: bool Reverse(TreeNode*node1,TreeNode*node2) { if(node1==NULL&&nod原创 2013-06-23 16:31:17 · 590 阅读 · 0 评论 -
LeetCode:Recover Binary Search Tree
使用constant space solution中序便利,用pre保存前一个便利到的值。从别人空间上看来的代码,很精简:http://blog.youkuaiyun.com/sunbaigui/article/details/8981243struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x)转载 2013-06-24 14:58:36 · 465 阅读 · 0 评论 -
LeetCode:Restore IP Addresses
这道题目有很多容易出错的地方,然后就是学会使用string的函数。class Solution {public: bool match(string s) { if(s.length()==1 && s>="0"&&s<="9") return true; if(s.length()==2 && s>="10"&&s<="99原创 2013-07-14 18:10:05 · 714 阅读 · 0 评论 -
leetcode:Subsets II
这道题目用深搜1、N个数字的可能的组合可以当做是N位二进制数,1表示选择该位,0表示不选择;2、可以用set先保存可以方便去重。class Solution { set> result;public: void dfs(vector&S, int i, vector tmp){ if(i == S.size()){ sort(t转载 2013-07-14 22:18:05 · 668 阅读 · 0 评论 -
[LeetCode] Decode Ways
我的作法:这道题目我用搜索,每次选1个或者2个数字。然后TLE。这样的作法其实是相当于二叉树,TLE是很大一部分做重复工作。例如两种选择 1 2 和2 1 之后那一部分的计算是相同的,搜索计算了两次。、后来看网上有DP作法,保存搜索结果class Solution { private: vector f; public: int getF(int ind转载 2013-07-15 11:27:40 · 606 阅读 · 0 评论 -
[leetcode]Next Permutation
这个做法是从排序那道题目想出来的。具体做法如下从最后一位开始寻找之后比他大的数字,如果找到有这样的数则返回。如果之后有多个比他大的数,选择最靠近末尾一个。假设第i位之后的第j位比第i为大 ,则swap(num[i],num[j])并且将i位之后重新进行排序。class Solution {public: void search(vector num,int& begin,原创 2013-08-11 20:05:32 · 586 阅读 · 0 评论
分享