leetcode
zhsenl
这个作者很懒,什么都没留下…
展开
-
Leetcode 贪心 Best Time to Buy and Sell Stock III
题意:给定一组数,表示某个股票每天的价格,问怎么买卖可获得最大利益。最多可以买卖再次思路:分段动规因为最多可买卖两次,所以可分将数组两段,每段取最大利益设i将[1,n]分为[1,i]和[i,n](如果第一段在i卖,第二段在i买,则两段合为一段)f[i]表示以i为结尾的最大利益f[i] = max(f[i - 1], prices[i] - cur_min_price), cur_min_price表示当前最小价格从0到n,求f[i]g[i]表示以i为开头的最大利益g[i] = max(g[i原创 2014-05-14 20:34:51 · 747 阅读 · 0 评论 -
Leetcode 线性表 Sort Colors
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlieSort Colors Total Accepted: 13005 Total Submissions: 41941Given an array with n objects colored red, white or blue, sort原创 2014-05-15 10:56:05 · 713 阅读 · 0 评论 -
Leetcode 细节实现 Pascal's Triangle
题意:给定数字numRows,返回杨辉三角的前numRows行思路:按杨辉三角的定义生成即可复杂度:时间O(n^2),空间O(n^2)原创 2014-05-14 18:06:02 · 727 阅读 · 0 评论 -
Leetcode 线性表 数 Add Two Numbers
题意:给定两个代表数字的链表,每个节点里存放一个digit,数字是逆方向的,将这两个链表相加起来思路:1.i, j遍历l1,l2至最长,短的补零2..设置一个进位变量c, 第i次遍历 l1,l2,c的和除以10进位,mod10留在这一位3.出循环后还要检查是不是还有进位复杂度:O(m+n), 空间O(m+n)原创 2014-05-15 10:02:56 · 748 阅读 · 0 评论 -
Leetcode 暴力 Generate Parentheses
题意:给定数字n,生成所有可能的n对括号的组合思路:dfs暴力枚举当左括号出现的次数 < n 的时候,可以选择放置新的左括号当右括号出现的次数 < 左括号的次数的时候,可以选择放置新的右括号递归函数:void generateparenthesis(int n, int left, int right, vector<string>& result)表示将生成的所有可能的n对括号的组合放到result中,其中,s表示已生成的部分括号,left表示当前的左括号数,right表示当前的右括号原创 2014-05-15 10:29:07 · 745 阅读 · 0 评论 -
Leetcode 线性表 Merge Sorted Array
题意:两个有序数组A、B,把它们合成一个有序数组存放在数组A上思路:归并排序中的合并步骤。从头往前合并两个数据。A的大小是m,B的大小是n,合并后A的大小是m+n。设三个下标i,j,k,开始时分别指向A的m-1位置,m+n-1位置和B的n-1位置i,j分别向数组A,B的前面扫描,每次扫描比较A[i]和B[j]的大小,将大小的赋值给A[k],同时k--当i,j小于0时,停止扫描,把下标不小于0的那个数组复制到A中去(如果是A自己就不用复制了)原创 2014-05-14 18:09:05 · 687 阅读 · 0 评论 -
Leetcode 树 Maximum Depth of Binary Tree
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlieMaximum Depth of Binary Tree Total Accepted: 16605 Total Submissions: 38287Given a binary tree, find its maximum depth.原创 2014-05-10 22:42:45 · 806 阅读 · 0 评论 -
Leetcode 位运算 Single NumberII
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlieSingle Number II Total Accepted: 14224 Total Submissions: 43648Given an array of integers, every element appears three ti原创 2014-05-10 22:28:20 · 857 阅读 · 0 评论 -
Leetcode 位运算 Single Number
题意:在一组数组中除一个元素外其它元素都出现两次,找出这个元素思路:位运算。异或。因为异或操作可以交换元素的顺序,所以元素异或的顺序没影响,最后出现再次的元素都会被异或掉,相当于0和只出现一次的那个元素异或,结果还是那个元素推广:这个方法也适合于出现其它元素都出现偶数次,而要找的元素出现奇数次的情况相关题目:Single Number IIclass Solution原创 2014-05-10 22:21:29 · 926 阅读 · 0 评论 -
Leetcode 树 Balanced Binary Tree
题意:给定一棵二叉树,判断它是不是高平衡的。高平衡指的是每一个节点的左右子树的深度差不超过1思路:bfs递归1.如果根节点的左右子树深度之差大于1,返回false2.如果左子树或右子树不是平衡的,返回false3.返回true复杂度:时间O(n), 空间O(log n)原创 2014-05-15 11:26:44 · 565 阅读 · 0 评论 -
Leetcode 树 Convert Sorted Array to Binary Search Tree
题意:将一个已排序的数组转化为一棵二叉查找树思路:dfs + 二分设数组的下标范围为[begin, end],它的中间元素的下标为middle = (begin + end) / 2;middle 将数组分为[begin, middle - 1]和[middle + 1, end];middle对应一个节点,它的左右子节点分别为[begin, middle - 1]和[middle + 1, end]的中间元素对应的节点复杂度:时间O(log n),空间O(1)原创 2014-05-15 11:29:23 · 598 阅读 · 0 评论 -
Leetcode 树 Same Tree
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlieSame Tree Total Accepted: 15922 Total Submissions: 38418Given two binary trees, write a function to check if they are equal o原创 2014-05-11 17:01:54 · 1088 阅读 · 0 评论 -
Leetcode 数 Reverse Integer
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlieReverse Integer Total Accepted: 17472 Total Submissions: 43938Reverse digits of an integer.Example1: x = 123, return 32原创 2014-05-12 16:48:05 · 713 阅读 · 0 评论 -
Leetcode 树 Symmetric Tree
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlieSymmetric Tree Total Accepted: 13991 Total Submissions: 44240Given a binary tree, check whether it is a mirror of itself原创 2014-05-12 16:11:16 · 851 阅读 · 0 评论 -
Leetcode 树 Binary Tree Postorder Traversal
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie原创 2014-05-13 16:58:29 · 679 阅读 · 0 评论 -
Leetcode 树 Populating Next Right Pointers in Each Node II
题意:给定一棵任意二叉树(不一定是perfect binary tree),将它每一个节点的next指针都指向该节点右边的节点思路:bfs这里不能用dfs了,只能用bfsbfs遍历将同一层的节点存放在同一个数组里,然后在遍历每个数组,将前面的节点和后面的节点connect起来,最后一个节点和NULL connect起来需要定义一个新的struct结构,保存指向每个节点的指针和该节点所在的层复杂度:时间O(n), 空间O( n)原创 2014-05-13 22:19:44 · 1375 阅读 · 0 评论 -
Leetcode 树 Populating Next Right Pointers in Each Node
题意:给定一棵perfect binary tree,将它每一个节点的next指针都指向该节点右边的节点思路:dfs在connect一棵树的时候,需要知道这棵树的根节点和它右边的节点1.将树的根节点和它右边的节点连接起来2.递归地将左子树connect起来,需要知道左子树节点和右子树节点3.递归地将右子树connect起来,需要知道右子树节点和根右边的节点的左子树节点递归函数为:void connect(TreeLinkNode *root, TreeLinkNode *sibling)表原创 2014-05-13 21:15:25 · 760 阅读 · 0 评论 -
Leetcode 树 Unique Binary Search Trees
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlieUnique Binary Search Trees Total Accepted: 13478 Total Submissions: 37858Given n, how many structurally unique BST's (bin原创 2014-05-12 22:32:53 · 875 阅读 · 0 评论 -
Leetcode 线性表 Linked List Cycle
题意:判断一个链表中是否有环思路:快慢指针,如果有环,最终快慢指针会在非NULL相遇注:用到fast->next前先要确保fast非NULL,要用fast->next->next前先要确保fast,fast->next非NULL复杂度:时间O(n), 空间O(1)相关题目:Linked List CycleII原创 2014-05-13 16:34:14 · 714 阅读 · 0 评论 -
Leetcode 贪心 Best Time to Buy and Sell StockII
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlieBest Time to Buy and Sell Stock II Total Accepted: 13030 Total Submissions: 36467Say you have an array for which the ith原创 2014-05-12 20:35:30 · 736 阅读 · 0 评论 -
Leetcode 贪心 Best Time to Buy and Sell Stock
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlieBest Time to Buy and Sell Stock Total Accepted: 13234 Total Submissions: 43145Say you have an array for which the ith ele原创 2014-05-12 17:57:21 · 878 阅读 · 0 评论 -
Leetcode 树 Unique Binary Search TreesII
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlieUnique Binary Search Trees II Total Accepted: 7349 Total Submissions: 27648Given n, generate all structurally unique原创 2014-05-13 16:17:57 · 628 阅读 · 0 评论 -
Leetcode 树 Binary Tree Level Order Traversal
题意:给定一棵二叉树,返回按层遍历的结果思路1:bfs,定义一个新的struct,记录指针向节点的指针和每个节点所在的层复杂度1:时间O(n),空间O(n)思路2:dfs递归函数:void levelOrder(TreeNode *root, int level, vector<vector<int> >&result)表示把根为root的树按层存放在result中,其中level表示当前的层数复杂度2:时间O(n),空间O(n)相关题目:原创 2014-05-13 17:42:13 · 887 阅读 · 0 评论 -
Leetcode 树 Binary Tree Inorder Traversal
题意:中序遍历思路:采用递归实现。因为函数声明是返回一个vector<int>,所以每个子树返回的是该子树的中序遍历的结果按照 左、根、右的次序把根和左右子树的vector合并起来就可以了原创 2014-05-13 16:43:55 · 849 阅读 · 0 评论 -
Leetcode 树 Binary Tree Level Order Traversal II
题意:从底往上按层遍历二叉树思路:思路和Binary Tree Level Order Traveral 一样,即从上往下按层遍历二叉树,将每一层的节点存放到该层对应的数组中最后将得到的数组倒转一下就可以了按层遍历二叉树可用bfs,也可用dfs,但都要记录节点所在的层复杂度:时间O(n), 空间O(n)原创 2014-05-13 20:28:29 · 1108 阅读 · 0 评论 -
Leetcode 树 Binary Tree Preorder Traversal
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlieBinary Tree Preorder Traversal Total Accepted: 17948 Total Submissions: 51578Given a binary tree, return the preorder tra原创 2014-05-13 16:50:14 · 753 阅读 · 0 评论 -
Leetcode 树 Binary Tree Zigzag Level Order Traversal
题意:给定一棵二叉树,返回按zigzag层次遍历的结果思路:还是跟前面的Binary Tree Level Order Traversal的思路一样即从上往下按层遍历二叉树,将每一层的节点存放到该层对应的数组中最后将得到的总数组中奇数层(从0层开始计数)的子数组reverse一下就可以了复杂度:时间O(n),空间O(n)原创 2014-05-13 20:54:47 · 1283 阅读 · 0 评论 -
Leetcode 二分查找 Search a 2D Matrix
题意:在一个二维矩阵中找到给定的值。矩阵从上到下从左到右有序思路:二维空间的二分查找 先在一维里找中间位置,再将该位置转为二维空间里的下标注:下标比较难弄,得注意点复杂度: 时间O(log n),空间O(1)相关题目:Search Insert Position原创 2014-05-14 09:47:15 · 896 阅读 · 0 评论 -
Leetcode 线性表 Remove Duplicates from Sorted Array II
题意:从一个已排序的数组中移除掉重复的元素,每个元素最多可重复两次思路: 思路和Remove Duplicates from Sorted Array一样,不过要设置一个计数变量,表示当前值出现的次数出现次数少于2可以加入到新数组,多于2则不可以。每次遇到一个新变量要把计数变量重新设置为1,加入新数组要加1 复杂度:时间O(n), 空间O(1)原创 2014-05-14 10:54:44 · 650 阅读 · 0 评论 -
Leetcode 线性表 Remove Duplicates from Sorted List II
题意:将已排序的链表中所有重复的元素移除思路:三个个指针,pre, cur, next一个布尔变量is_appear,表示cur指针指向的值之前是否已经出现过检查cur, next指向的节点的值是否相同,相同的话,删除cur不同的话,如果is_appear为true,删除cur,否则不删除删除的话,只移动cur, next指针不删除的话,要移动pre, cur, next三个指针复杂度:时间O(n),空间O(1)原创 2014-05-14 14:21:34 · 640 阅读 · 0 评论 -
Leetcode 线性表 Remove Element
题意:移除数组中出现的给定元素,并返回移除元素数组长度。要求在数组上操作思路:遍历数组,将除给定元素外的其他元素赋值给“新数组”,不过这个“新数组”还是在原来的“旧数组”的内存空间因为遍历旧数组的下标总大于等于新数组的下标,所以赋值并不会影响到还没有遍历到的元素复杂度:时间O(n), 空间O(1)原创 2014-05-14 14:24:39 · 741 阅读 · 0 评论 -
Leetcode 线性表 Remove Duplicates from Sorted List
题意:去掉已排序的链表里重复的元素思路:1.遍历链表,用一个变量保存当前链表节点的值2.如果当前链表节点值与前面的一样,则删除当前链表节点3.否则用当前节点值更新该变量复杂度:时间O(n), 空间O(1)原创 2014-05-14 10:16:45 · 777 阅读 · 0 评论 -
Leetcode 线性表 Remove Duplicates from Sorted Array
题意:从一个已排序的数组中移除掉重复的元素思路:用下标i扫描旧数组,用下标j来保存新数组的尾部如果旧数组的当前元素与新数组的最后一个元素相同,则继续扫描旧数组如果不同,新数组的下标前移一们,将旧数组的当前元素赋给新数组,继续扫描旧数组相关题目:Remove ElementRemove Duplicates from Sorted ListRemove Duplicates from Sorted List II原创 2014-05-14 10:13:40 · 705 阅读 · 0 评论 -
Leetcode 线性表 Remove Nth Node From End of List
题意:移除链表的倒数第n个元素思路:两个指针p, q,p先走n步,然后p,q一起走,当p走到尾的时候,q->next就是要删除的节点复杂度: 时间O(n),空间O(1)原创 2014-05-14 15:17:11 · 787 阅读 · 0 评论 -
Leetcode 动态规划 Climbing Stairs
题意:爬一层有n阶的楼梯,每次可以爬一阶或两阶,问爬到顶部有多少种方案思路:dp,具体一点是斐波那契数列。f(i) = f(i-1) + f(i-2)第i阶可以是从第i-2阶爬上来的,也可以是从第i-1阶爬上来的进一步发现在迭代到第i阶时,我们只要保存前面的f(i-1)和f(i-2),所以只要定义两个变量就可以,不用定义一个数组。原创 2014-05-14 15:35:45 · 967 阅读 · 0 评论 -
Leetcode 动态规划 Decode Ways
题意:将A-B编码为1-26,现在给一串数字,问有多少种解码方式思路:动态规划设f[i]表示以第i个字符结尾的数字串的解码方式,则如果 s[i - 2]是1 或 s[i - 2]是2且s[i - 1]小于6,f[i] = f[i - 1] + f[i - 2] 否则,f[i] = f[i - 1]此外,还要再加一些判断如果s[i - 1]是零,则以s[i - 2]数字结尾的解码方式为零。因为s[i - 2]数字必须和s[i - 1]结合起来实现的时候只要两个变量保存前两个的值,即f[i - 1原创 2014-05-14 17:41:31 · 878 阅读 · 0 评论 -
Leetcode 细节实现 Pascal's Triangle II
题意:题意:给定数字rowIndex,返回杨辉三角的第rowIndex行思路:按杨辉三角的定义生成rowIndex+1行杨辉,然后返回第rowIndex行即可复杂度:时间O(n^2),空间O(n^2)原创 2014-05-14 20:24:19 · 701 阅读 · 0 评论 -
Leetcode 数 String to Integer (atoi)
1.注意规则2.注意最小的负数的绝对值比最大的正数的绝对值大1,所以 line 13: (str[i] - '0') > INT_MAX%10不能取等号原创 2014-05-14 22:18:35 · 701 阅读 · 0 评论 -
Leetcode 线性表 Merge Two Sorted Lists
题意:将两个已排好序的链接合并成一个有序链表思路:归并排序的合并步骤,用两个指针分别指向两个链表,每次新链表的指针指向值小的那个节点,并分别前进该节点的链表指针和新链表的指针遍历的大小的短链表的长度遍历后把新链表的指针指向长链表的剩余部分小技巧:刚开始的时候,cur指针为NULL,cur->next未定义,可以使用一个dummy变量,让l3和cur指向该变量返回值的时候,再把l3前移一步就可以了。复杂度:时间O(m+n), 空间O(1)原创 2014-05-14 17:55:24 · 760 阅读 · 0 评论 -
Leetcode 线性表 Two Sum
题意:给定一组数和另一个数,在这组数中找两个数,使它们的和等于给定的数思路1: --> 错,因为题目要求返回下标。1.排序2.两个下标,一个指向头,一个指向尾3.如果下标指向的两个元素相加大于给定的数,尾下标减一 如果小于,头下标加一思路2: hash1.用hash存储每个数的下标2.数组,看hash[target-num[i]]是否存在复杂度:时间O(n), 空间O(n)原创 2014-05-14 21:16:53 · 739 阅读 · 0 评论