随笔分类 -  LeetCode

摘要:题目链接 44. 通配符匹配 思路分析 这个题在LC上属于hard类型,其实还是归结到了DP问题上。这个DP跟另外一题10. 正则表达式匹配有点像,但是这个题我个人来说做起来比正则表达式要简单很多。 这个题中,s和p都有可能为空,那么我们要先做个base cases。当两个字符串都为空的时候,直接返 阅读全文
posted @ 2020-07-05 17:10 ZJPang 阅读(126) 评论(0) 推荐(0)
摘要:题目链接 108. 将有序数组转换为二叉搜索树 思路分析 这个题要求我们将一个升序的数组转变成二叉搜索树,那么其实思路很容易了,就是使用二分的方法,把数组中的中间位置的数据作为当前树的根节点,它的左边的数成为它的左子树,右边的数成为它的右子树。 代码实现 /** * Definition for a 阅读全文
posted @ 2020-07-03 09:58 ZJPang 阅读(100) 评论(0) 推荐(0)
摘要:题目链接 718. 最长重复子数组 题目分析 这个题很明显的DP问题,而且七月份的每日一题都是以DP为主,很好~~ 但是在这个DP问题上,我又搞砸了,把子数组和子序列搞混了,对于一般的题目来说,子序列默认不连续,子数组默认连续。 具体来到DP问题的转移方程来说,对于子序列问题,当判断的两个字符不相等 阅读全文
posted @ 2020-07-01 10:11 ZJPang 阅读(126) 评论(0) 推荐(1)
摘要:题目链接 814. 二叉树剪枝 题目分析 这个题目给一棵二叉树,如果当前子树中不存在1,就要把这个子树从整棵树上剪掉。 遇到树的问题我们一般用递归的方法解决,递归主要有以下几个问题 结束条件 子递归条件 子递归的返回值的处理 对于树来说,结束条件一般是访问到空结点。在本题中也一样,同时我们每次的子递 阅读全文
posted @ 2020-06-29 12:47 ZJPang 阅读(116) 评论(0) 推荐(0)
摘要:题目链接 215. 数组中的第K个最大元素 题目思路 这个题最容易的思想就是先进行排序,排序完从后往前数k位即可。这个时间复杂度为O(nlogn),但是我们其实没必要对整个数组进行完全的排序。 第二种方法的有化解有优先队列(大顶堆),我们维护大小为k的大顶堆,然后遍历完整个数组之后,我们的大顶堆中存 阅读全文
posted @ 2020-06-29 11:28 ZJPang 阅读(137) 评论(0) 推荐(0)
摘要:题目链接 209. 长度最小的子数组 题目分析 这个题要我们求一个子数组,子数组意味着连续,而且这个题的数字全部都是正整数,刚好满足滑动窗口的条件,毫不犹豫就死命滑就完事了。 实现代码 class Solution { public int minSubArrayLen(int s, int[] n 阅读全文
posted @ 2020-06-28 09:44 ZJPang 阅读(136) 评论(0) 推荐(0)
摘要:题目链接 41. 缺失的第一个正数 题目分析 这个题如果没有下面的要求的话简直就是白给,直接一个map扫一次数组或者排序就行。 但是它这个既然提到了,我们还是得按照别人的要求做。 我们在剑指Offer里面有一题的思想和这里差不多,就是将满足要求的数放置到对应的下标上,由于题目是正整数,我们的数值应该 阅读全文
posted @ 2020-06-27 17:17 ZJPang 阅读(130) 评论(0) 推荐(0)
摘要:题目链接 1038. 从二叉搜索树到更大和树 题目分析 题目要求我们把大于等于当前结点的值累加起来然后替换掉该结点原来的值。考虑到这是一棵二叉搜索树,我们从右子树开始的中序遍历就是倒序数组。 我们需要一个pre指针指向前一个结点,就可以获得比你大的结点值之和,再加上当前结点的值就可以满足题目。 代码 阅读全文
posted @ 2020-06-26 21:17 ZJPang 阅读(167) 评论(0) 推荐(0)
摘要:题目链接 797. 所有可能的路径 题目分析 这个题,给了一个有向图的背景,然后要求我们把所有满足条件的路径都输出出来,看到返回值上的List<List>,刷题量比较多的人都知道这种一般都是回溯法解决。 代码实现 class Solution { public List<List<Integer>> 阅读全文
posted @ 2020-06-26 18:46 ZJPang 阅读(176) 评论(0) 推荐(0)
摘要:题目链接 139. 单词拆分 题目分析 这个题要求我们去检查s是否能拆分成字典集合中的单词,其中字典集中可以把重复出现的单词看做一个。 我们仔细看第三个测试用例,可以发现他说的拆分就是你一个字母不能同时属于两个新单词。 这个题第一次做不会,后来看了题析才知道是DP问题,今天这个题作为每日一题, 自然 阅读全文
posted @ 2020-06-25 09:49 ZJPang 阅读(147) 评论(0) 推荐(0)
摘要:题目 1436. 旅行终点站 思路分析 这个题其实很简单啊,可以把它看成一个有向图,我们需要在这个有向图中找出度为0的点即可。 代码实现 class Solution { public String destCity(List<List<String>> paths) { HashMap<Strin 阅读全文
posted @ 2020-06-24 19:07 ZJPang 阅读(103) 评论(0) 推荐(0)
摘要:题目地址 16. 最接近的三数之和 题目分析 这个题和三数之和很相似,所以我采用了相同的做法,先进行排序,每次固定左手边的值。然后使用双指针从左边和右边寻找三数之和最接近target的值,这样做的效率有点差,两个月过去了水平还没啥提升,我醉了。 实现代码 class Solution { publi 阅读全文
posted @ 2020-06-24 12:12 ZJPang 阅读(101) 评论(0) 推荐(0)
摘要:67. 二进制求和 题目分析 这个题很明显就是对字符串的每一个位进行操作,思想也很简单啊,主要还是考验代码风格吧。 我们只需要从右到左每个位进行判断,然后填入新的字符串中,最后进行返回即可。 实现代码 class Solution { public String addBinary(String a 阅读全文
posted @ 2020-06-23 10:18 ZJPang 阅读(113) 评论(0) 推荐(0)
摘要:128. 最长连续序列 给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为 O(n)。 示例: 输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。 这个题就是让你在给定的数组中找一个连续递增的序列, 阅读全文
posted @ 2020-06-06 10:59 ZJPang 阅读(196) 评论(1) 推荐(0)
摘要:875. 爱吃香蕉的珂珂 1011. 在 D 天内送达包裹的能力 这两个题其实都是二分查找算法的变种,这两个题如果没有做过的话根本想不到他和二分查找有什么关系,其实它们内部还是隐含了一些的条件的。 首先875题,他问的是吃香蕉的速度应该怎么取,那么我们要知道吃香蕉的速度应该在什么范围之内。题目中说如 阅读全文
posted @ 2020-06-04 16:13 ZJPang 阅读(223) 评论(0) 推荐(0)
摘要:https://leetcode-cn.com/problems/restore-ip-addresses/ 这个题很典型的回溯算法,但是要考虑的问题真的太多了,写的我好烦。 public List<String> restoreIpAddresses(String s) { List<String 阅读全文
posted @ 2020-06-03 22:48 ZJPang 阅读(144) 评论(0) 推荐(0)
摘要:https://leetcode-cn.com/problems/max-consecutive-ones-iii/ 这个题一看就是滑动窗口的题,但是滑动窗口也有不同的优化方法。 class Solution { public int longestOnes(int[] A, int K) { if 阅读全文
posted @ 2020-05-31 17:59 ZJPang 阅读(133) 评论(0) 推荐(0)
摘要:https://leetcode-cn.com/problems/group-the-people-given-the-group-size-they-belong-to/ 这个题一开始还没看懂啥意思。。看了我几分钟 说白了就是给一个数组,数组里的数字代表他所在的分组中最多有多少人。 那么我们就很容 阅读全文
posted @ 2020-05-31 16:20 ZJPang 阅读(206) 评论(0) 推荐(0)
摘要:https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/ 这个题明明有思路,但是写出来的代码就是一团糟还过不了,一气之下直接放弃治疗看讨论区了。。 先贴代码 class Solution { int realMax = Intege 阅读全文
posted @ 2020-04-17 16:57 ZJPang 阅读(208) 评论(0) 推荐(0)