摘要:
一、题目说明 题目是46. Permutations,给一组各不相同的数,求其所有的排列组合。难度是Medium 二、我的解答 这个题目,前面遇到过类似的。回溯法(树的深度优先算法),或者根据如下求解: "刷题31. Next Permutation" 我考虑可以用dp做,写了一个上午,理论我就不说 阅读全文
摘要:
一、题目说明 题目是42. Trapping Rain Water,翻译起来就是“接雨水”。给n个非负正数代表高度,每个正数宽度为1,让计算能多少雨水。题目难度是Hard 二、我的解法 这个题目是找“坑”,然后计算里面可以存的“雨”。总共提交了5次,前面几次都是边界错误。 代码如下: 性能虽然差点, 阅读全文
摘要:
一、题目说明 题目是41. First Missing Positive,求一个未排序队列中缺失的最小正整数。时间复杂度要求是O(n)。难度是Hard,确实难。 二、我的解答 不考虑时间复杂度,首先对队列进行排序,然后从第一个正数开始,如果不是1就返回1,否则继续查找2....找不到就返回,找到就继 阅读全文
摘要:
一、题目说明 题目39. Combination Sum,是从正数列表中选取几个,其和等于目标数的可能组合。任何一个数可以重复取,如candidates = [2,3,6,7], target = 7,结果集合是[ [7], [2,2,3] ] 如candidates = [2,3,5], targ 阅读全文
摘要:
一、题目说明 题目是34. Find First and Last Position of Element in Sorted Array,查找一个给定值的起止位置,时间复杂度要求是Olog(n)。题目的难度是Medium! 二、我的解答 这个题目还是二分查找(折半查找),稍微变化一下。target 阅读全文
摘要:
一、题目说明 这个题目是33. Search in Rotated Sorted Array,说的是在一个“扭转”的有序列表中,查找一个元素,时间复杂度O(logn)。 二、我的解答 这是一个查找,根据复杂度,我们知道只能用二分查找。但由于这个不是一个完全的有序列表,故需要改造。先写出二分查找(来源 阅读全文
摘要:
一、题目说明 题目是32. Longest Valid Parentheses,求最大匹配的括号长度。题目的难度是Hard 二、我的做题方法 简单理解了一下,用栈就可以实现。实际上是我考虑简单了,经过5次提交终于正确了。 性能如下: 代码如下: 三、优化措施 题解给了4种方法,这4种方法都比较好理解 阅读全文
摘要:
一、题目说明 题目是31. Next Permutation,英文太差看不懂,翻译了一下。才知道是求字典顺序下的下一个排列,不允许使用额外空间。题目难度是Medium! 二、我的实现 首先要进一步理解题目,以 为例,字典顺序如下: 如何从(1) (2) (3) (4) (5) (6) (7)实现状态 阅读全文
摘要:
一、题目说明 这个题目是23. Merge k Sorted Lists,归并k个有序列表生成一个列表。难度为Hard,实际上并不难,我一次提交就对了。 二、我的解答 就是k路归并,思路很简单,实现也不难。 不过,性能一般: 三、优化措施 上面的实现,之所以性能不足,在于一次归并一个队列,用的是插入 阅读全文
摘要:
一、题目说明 这个题目是22. Generate Parentheses,简单来说,输入一个数字n,输出n对匹配的小括号。 简单考虑了一下,n=0,输出"";n=1,输出“()”;n=2,输出“()()”,"(())"... 二、我的解法 我考虑了一下,基本上2种思路,其1是暴力破解法,就是列出所有 阅读全文