02 2020 档案

摘要:一、题目说明 题目96. Unique Binary Search Trees,求1 n节点组成的二叉排序树的个数。 二、我的解答 首先,我枚举了G(1)=1,G(2)=2,G(3)=5,G(4)=14,在枚举的过程中,我们知道:1 n的二叉搜索树,包括以1,2...n为根的所有二叉树的总数。以i为 阅读全文
posted @ 2020-02-29 08:07 siwei718 阅读(87) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目94. Binary Tree Inorder Traversal,给一个二叉树,返回中序遍历序列。题目难度是Medium! 二、我的解答 用递归遍历,学过数据结构的应该都可以实现。 三、优化措施 用非递归算法,需要一个栈,代码如下: 性能: 阅读全文
posted @ 2020-02-28 08:18 siwei718 阅读(89) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目,85. Maximal Rectangle,计算只包含1的最大矩阵的面积。难度是Hard! 二、我的解答 看到这个题目,我首先想到的是dp,用 表示第i行第j列元素向右下角计算的最大面积。后来发现从 、`dp[i][j+1] dp[i+1][j+1] dp[i][j]`几乎没有任 阅读全文
posted @ 2020-02-27 08:39 siwei718 阅读(92) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目84. Largest Rectangle in Histogram,给定n个非负整数(每个柱子宽度为1)形成柱状图,求该图的最大面积。题目难度是Hard! 二、我的解答 这是一个 看起来容易,做起来很容易错的题目 。我开始用的是“挖坑法”,遗憾的是总是 Time Limit Ex 阅读全文
posted @ 2020-02-26 07:58 siwei718 阅读(123) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目79. Word Search,给定一个由字符组成的矩阵,从矩阵中查找一个字符串是否存在。可以连续横、纵找。不能重复使用,难度是Medium。 二、我的解答 惭愧,我写了很久总是有问题,就先看正确的写法,下面是回溯法的代码: 性能: 三、优化措施 我的思路是用 来存储board中所 阅读全文
posted @ 2020-02-25 11:48 siwei718 阅读(179) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目78. Subsets,给一列整数,求所有可能的子集。题目难度是Medium! 二、我的解答 这个题目,前面做过一个类似的,相当于求闭包: 刷题22. Generate Parentheses 算了,用最简单的回溯法吧: 性能如下: 三、优化措施 当然,用 刷题22. Genera 阅读全文
posted @ 2020-02-24 08:15 siwei718 阅读(91) 评论(0) 推荐(0) 编辑
摘要:一、起因 宅在家中,不知该做点什么。没有很好的想法,自己一直想提升技能,语言基础自不必言,数据结构还算熟悉,算法能力一般。于是乎,就去刷一通题。 刷题平台有很多,我选择了在leetcode进行刷题。回头看第一篇文章,还算有一些收获的。 传送门: 从心出发 刷leetcode写给5年后的自己,原计划用 阅读全文
posted @ 2020-02-23 11:46 siwei718 阅读(589) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目76. Minimum Window Substring,求字符串S中最小连续字符串,包括字符串T中的所有字符,复杂度要求是O(n)。难度是Hard! 二、我的解答 先说我的思路: (1)统计t中每个字符出现的次数, (2)用hash存储s中出现t中字符的位置, (3)计算最短字符 阅读全文
posted @ 2020-02-23 08:17 siwei718 阅读(201) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目75. Sort Colors,给定n个整数的列表(0代表red,1代表white,2代表blue),排序实现相同颜色在一起。难度是Medium。 二、我的解答 这个是一个排序,还是简单的,代码如下: 性能如下: 阅读全文
posted @ 2020-02-22 14:25 siwei718 阅读(138) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目72. Edit Distance,计算将word1转换为word2最少需要的操作。操作包含:插入一个字符,删除一个字符,替换一个字符。本题难度为Hard! 二、我的解答 这个题目一点思路也没,就直接看答案了。用的还是dp算法, 中的 表示将word1的前i位,变为word2的前j 阅读全文
posted @ 2020-02-21 08:31 siwei718 阅读(126) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目70. Climbing Stairs,爬台阶(楼梯),一次可以爬1、2个台阶,n层的台阶有几种爬法。难度是Easy! 二、我的解答 类似的题目做过,问题就变得非常简单。首先用递归方法计算: 非常不好意思, 。 那就用dp算法吧: 性能: 三、优化措施 不优化了! 阅读全文
posted @ 2020-02-20 08:34 siwei718 阅读(121) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目64. Minimum Path Sum,给一个m n矩阵,每个元素的值非负,计算从左上角到右下角的最小路径和。难度是Medium! 二、我的解答 乍一看,这个是计算最短路径的,迪杰斯特拉或者弗洛伊德算法都可以。不用这么复杂,同上一个题目一样: 刷题62. Unique Paths 阅读全文
posted @ 2020-02-19 09:53 siwei718 阅读(101) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目62. Unique Paths,在一个m n矩阵中,求从左上角Start到右下角Finish所有路径。其中每次只能向下、向右移动。难度是Medium! 二、我的解答 这个题目读读题目,理解后不难。定义一个 ,初始化最后一列为1,最后一行为1,然后循环计算到 就可以了。 代码如下: 阅读全文
posted @ 2020-02-18 08:48 siwei718 阅读(98) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目是56. Merge Intervals,给定一列区间的集合,归并重叠区域。 二、我的做法 这个题目不难,先对intervals排序,然后取下一个集合,如果cur[0] resLast[1]在直接放到集合中,否者合并。代码如下: 性能如下: 三、优化措施 暂时这样,不优化了。 阅读全文
posted @ 2020-02-17 10:20 siwei718 阅读(99) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目55. Jump Game,给定一组非负数,从第1个元素起,nums[i]表示你当前可以跳跃的最大值,计算能否到达最后一个index。难度是Medium。 二、我的解答 非常惭愧 ,这个题目我做完,提交n次,除了几次边界错,其他就是 ,而且优化也无果。 我的代码: 性能: 三、优化 阅读全文
posted @ 2020-02-16 10:48 siwei718 阅读(101) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目是53. Maximum Subarray,求最长连续子序列最大和。难度是Easy! 二、我的解答 Easy的题目,居然没做出来。 后来看了用dp方法,其中dp[i]表示以第i个元素结尾的最大和。 然后求出最大的dp即可。知道思路,实现非常简单,问题是没有往动态规划上面去想。 性能 阅读全文
posted @ 2020-02-15 13:03 siwei718 阅读(93) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目是49. Group Anagrams,给定一列字符串,求同源词(包含相同字母的此)的集合。题目难度是Medium。 二、我的做法 题目简单,就不多说,直接上代码: 性能如下: 三、优化措施 主要是用了unordered_map,也用到了sort排序,当然用map也可以。 晕了,不 阅读全文
posted @ 2020-02-14 09:22 siwei718 阅读(95) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目是48. Rotate Image,简而言之就是矩阵顺时针旋转90度。不允许使用额外的矩阵。 经过观察(写一个矩阵,多看几遍就知道了),旋转90度后: 第1行变为len 1列(最后一列),第i行变为 len i 1列最终达到(i,j) (j,len i 1) 知道规律后,做法就比较 阅读全文
posted @ 2020-02-13 09:17 siwei718 阅读(125) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目是46. Permutations,给一组各不相同的数,求其所有的排列组合。难度是Medium 二、我的解答 这个题目,前面遇到过类似的。回溯法(树的深度优先算法),或者根据如下求解: "刷题31. Next Permutation" 我考虑可以用dp做,写了一个上午,理论我就不说 阅读全文
posted @ 2020-02-12 08:51 siwei718 阅读(98) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目是42. Trapping Rain Water,翻译起来就是“接雨水”。给n个非负正数代表高度,每个正数宽度为1,让计算能多少雨水。题目难度是Hard 二、我的解法 这个题目是找“坑”,然后计算里面可以存的“雨”。总共提交了5次,前面几次都是边界错误。 代码如下: 性能虽然差点, 阅读全文
posted @ 2020-02-11 08:24 siwei718 阅读(173) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目是41. First Missing Positive,求一个未排序队列中缺失的最小正整数。时间复杂度要求是O(n)。难度是Hard,确实难。 二、我的解答 不考虑时间复杂度,首先对队列进行排序,然后从第一个正数开始,如果不是1就返回1,否则继续查找2....找不到就返回,找到就继 阅读全文
posted @ 2020-02-10 08:13 siwei718 阅读(81) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目39. Combination Sum,是从正数列表中选取几个,其和等于目标数的可能组合。任何一个数可以重复取,如candidates = [2,3,6,7], target = 7,结果集合是[ [7], [2,2,3] ] 如candidates = [2,3,5], targ 阅读全文
posted @ 2020-02-09 07:48 siwei718 阅读(109) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目是34. Find First and Last Position of Element in Sorted Array,查找一个给定值的起止位置,时间复杂度要求是Olog(n)。题目的难度是Medium! 二、我的解答 这个题目还是二分查找(折半查找),稍微变化一下。target 阅读全文
posted @ 2020-02-08 08:47 siwei718 阅读(97) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 这个题目是33. Search in Rotated Sorted Array,说的是在一个“扭转”的有序列表中,查找一个元素,时间复杂度O(logn)。 二、我的解答 这是一个查找,根据复杂度,我们知道只能用二分查找。但由于这个不是一个完全的有序列表,故需要改造。先写出二分查找(来源 阅读全文
posted @ 2020-02-07 10:53 siwei718 阅读(99) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目是32. Longest Valid Parentheses,求最大匹配的括号长度。题目的难度是Hard 二、我的做题方法 简单理解了一下,用栈就可以实现。实际上是我考虑简单了,经过5次提交终于正确了。 性能如下: 代码如下: 三、优化措施 题解给了4种方法,这4种方法都比较好理解 阅读全文
posted @ 2020-02-06 08:42 siwei718 阅读(111) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 题目是31. Next Permutation,英文太差看不懂,翻译了一下。才知道是求字典顺序下的下一个排列,不允许使用额外空间。题目难度是Medium! 二、我的实现 首先要进一步理解题目,以 为例,字典顺序如下: 如何从(1) (2) (3) (4) (5) (6) (7)实现状态 阅读全文
posted @ 2020-02-05 08:04 siwei718 阅读(120) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 这个题目是23. Merge k Sorted Lists,归并k个有序列表生成一个列表。难度为Hard,实际上并不难,我一次提交就对了。 二、我的解答 就是k路归并,思路很简单,实现也不难。 不过,性能一般: 三、优化措施 上面的实现,之所以性能不足,在于一次归并一个队列,用的是插入 阅读全文
posted @ 2020-02-04 09:43 siwei718 阅读(156) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 这个题目是22. Generate Parentheses,简单来说,输入一个数字n,输出n对匹配的小括号。 简单考虑了一下,n=0,输出"";n=1,输出“()”;n=2,输出“()()”,"(())"... 二、我的解法 我考虑了一下,基本上2种思路,其1是暴力破解法,就是列出所有 阅读全文
posted @ 2020-02-03 12:45 siwei718 阅读(158) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 这个题目是21. Merge Two Sorted Lists,归并2个已排序的列表。难度是Easy! 二、我的解答 既然是简单的题目,应该一次搞定。确实1次就搞定了,但是性能太差: 代码如下: 三、优化措施 优化后,8s,代码如下: 阅读全文
posted @ 2020-02-02 09:56 siwei718 阅读(202) 评论(0) 推荐(0) 编辑
摘要:一、题目说明 这个题目是20. Valid Parentheses,简单来说就是括号匹配。在学数据结构的时候,用栈可以解决。题目难度是Medium。 二、我的解答 栈涉及的内容不多,push、pop、top,。 我总共提交了3次: 第1次:Runtime Error,错误原因在于pop的时候,未判断 阅读全文
posted @ 2020-02-01 09:00 siwei718 阅读(157) 评论(0) 推荐(0) 编辑