07 2020 档案

摘要:题目链接 1338. 数组大小减半 题目分析 这个题没啥好说的,只能直接先统计每个数字出现的次数,然后优先删除出现次数多的,因为题目要求我们得到的结果集是“最小”的,所以就利用贪心的思想了。 我写这个题主要是为了记录优先队列的使用,因为刷题那么久了,真正用过优先队列的次数却不是很多。 代码实现 cl 阅读全文
posted @ 2020-07-31 13:50 ZJPang 阅读(112) 评论(0) 推荐(0) 编辑
摘要:https://leetcode-cn.com/problems/longest-increasing-path-in-a-matrix/ 这个题是看到被人的面经来刷的。 自己想的dp实现出来是错的,思路完全乱掉了。先贴代码吧。 class Solution { public int longest 阅读全文
posted @ 2020-07-26 10:18 ZJPang 阅读(189) 评论(0) 推荐(0) 编辑
摘要:题目链接 91. 解码方法 题目分析 很明显的动态规划题,但是我在想状态转移方程的时候脑抽筋了,非得在dp[i-2]和dp[i-1]中取一个最大值然后加1,导致整个题没办法快速的解决。 其实这个题正解应该是这样的: 对于每一个字符,我们都应该判断单独一个字符和两个字符构成数字的情况 如果单独一个字符 阅读全文
posted @ 2020-07-24 23:51 ZJPang 阅读(106) 评论(0) 推荐(0) 编辑
摘要:题目链接 18. 四数之和 题目分析 这个题没啥好说的,就是四数之和拆分成三数之和,然后三数之和固定一个边界值,在剩下的部分利用双指针寻找符合条件的值即可。 这个题主要是可以优化的地方很多,很多剪枝的地方还学不会,第一次做出来只击败了10%的人,慢的可怜,后来加入了最小值和最大值的判断,把整个算法优 阅读全文
posted @ 2020-07-23 22:51 ZJPang 阅读(103) 评论(0) 推荐(0) 编辑
摘要:起因 最近有空,就想记录下自己的一些配置,所以写出了下面这篇教程 下载JDK 由于JDK11之后,Oracle JDK的license发生了一点变动,这里只选用openjdk进行教程。 首先我们进入清华大学的镜像源中找到openjdk的下载地址 按照自己所需要的版本和机器类型,选择不同的下载链接。我 阅读全文
posted @ 2020-07-23 10:59 ZJPang 阅读(182) 评论(0) 推荐(0) 编辑
摘要:题目链接 994. 腐烂的橘子 题目分析 这个题好像没有什么偷鸡的方法,只能一步一步去模拟橘子腐烂的过程。我们首先要先统计好的橘子的个数,因为我们接下来要用这个判断模拟过程是否结束。 因为一开始grid中腐烂的橘子为2,为了区分每一个时刻腐烂的橘子的不同,我们利用一个lastBad变量来记录下这个橘 阅读全文
posted @ 2020-07-23 10:31 ZJPang 阅读(171) 评论(0) 推荐(0) 编辑
摘要:题目链接 64. 最小路径和 题目分析 这个题应该是最容易的DP问题,dp[i][j]取决于dp[i-1][j]和dp[i][j-1]之中的最小值+grid[i][j],这个状态转移反映了当前格子是由左手边还是上边到达的,符合题目中的【只允许往下或者往右走】的特性 代码实现 class Soluti 阅读全文
posted @ 2020-07-23 08:41 ZJPang 阅读(79) 评论(0) 推荐(0) 编辑
摘要:题目链接 剑指 Offer 11. 旋转数组的最小数字 题目分析 这个题很明显的二分查找题了,二分查找是最简单的算法,但是也是最难弄明白的算法。 这个题主要的问题是存在了相等的元素,如果遇到了相等的元素我们需要把right指针左移一位,做一个偏移然后再次检查。 然后就是当mid < right的时候 阅读全文
posted @ 2020-07-22 09:36 ZJPang 阅读(87) 评论(0) 推荐(0) 编辑
摘要:题目链接 95. 不同的二叉搜索树 II 思路分析 这个题要求我们把树建模出来,那么我们只好对1-n这些数字一个一个进行二叉搜索树建模。 我们利用二叉搜索树的特性,左子树小于根节点、右子树大于根节点的特性进行建立。我们最外围使用1-n中的每一个数字作为根节点,然后递归生成其左子树和右子树。 但是在做 阅读全文
posted @ 2020-07-21 10:22 ZJPang 阅读(94) 评论(0) 推荐(0) 编辑
摘要:题目链接 167. 两数之和 II - 输入有序数组 题目分析 非常简单的一个题目,因为给定的是一个有序数组,我们可以直接使用双指针思想去寻找两个目标元素。如果num[left] + num[right]==target 就保存循环结果然后退出循环,否则就看大小移动left或者right指针。 其实 阅读全文
posted @ 2020-07-20 08:52 ZJPang 阅读(125) 评论(0) 推荐(0) 编辑
摘要:题目链接 97. 交错字符串 题目分析 字符串题目,一般不考虑暴力解法,因为极有可能会出现超时的情况(主要是重复搜索次数太多 这个题很明显的就是需要我们使用动态规划去做,一开始我自己也懵逼了,三串的DP?难不成要一个三维状态数组吗,但是仔细分析了一下好像其实并不是的。 因为我们s1的长度加s2的长度 阅读全文
posted @ 2020-07-18 10:06 ZJPang 阅读(130) 评论(0) 推荐(0) 编辑
摘要:题目链接 35. 搜索插入位置 题目分析 没啥好分析的,简单题,有序数组找插入位置,很明显的一个二分查找提示,我们直接利用二分模板进行查找就行,注意下边界问题。 代码实现 class Solution { public int searchInsert(int[] nums, int target) 阅读全文
posted @ 2020-07-17 09:57 ZJPang 阅读(124) 评论(0) 推荐(0) 编辑
摘要:题目链接 120. 三角形最小路径和 题目分析 这个题要求我们在一个形状类似三角形的二维数组中寻找一条最短的路径,那么这个题暴力用bfs做是绝对会TLE的,所以只能用记忆化的方式。 对于记忆化的方式也有两种,第一种是自顶向下,第二种是自底向上。感觉DP就是怎么顺手怎么写就行了。 实现思路1 我们先开 阅读全文
posted @ 2020-07-14 09:20 ZJPang 阅读(146) 评论(0) 推荐(0) 编辑
摘要:题目链接 350. 两个数组的交集 II 题目分析 这个题目要求我们求两个数组的交集,那么我们最简单的思想就是利用map去做一个缓存,然后针对另外一个数组,去检查缓存中是否有这个数,并且这个数出现的次数要大于0,如果大于0,就纳入到交集中。 第二种思想就是对两个数组进行预处理,把无序变成有序,然后利 阅读全文
posted @ 2020-07-13 09:32 ZJPang 阅读(102) 评论(0) 推荐(0) 编辑
摘要:题目链接 174. 地下城游戏 题目分析 今天做题翻车了,从左上角往右下走考虑的cases好多,直接没做出来翻车。后来看了评论区才得出下面的答案。。 我们从右下角开始做会比较容易理解了,dp[i][j]代表进入dungeon[i][j]的地方需要的最小生命值。 我们这个最小生命值其实取决于其(右侧和 阅读全文
posted @ 2020-07-12 19:38 ZJPang 阅读(89) 评论(0) 推荐(0) 编辑
摘要:题目链接 315. 计算右侧小于当前元素的个数 题目分析 这个题让我们统计nums[i]的右边比nums[i]小的数字的个数。第一眼看我直接就暴力解了,解到15个测试用例TLE了,所以换思想。 留意到题目的tag带有二分查找,排序。我开始注意在我们暴力解的过程中,我们每次都需要在i+1 ~ nums 阅读全文
posted @ 2020-07-11 11:32 ZJPang 阅读(129) 评论(0) 推荐(0) 编辑
摘要:题目链接 309. 最佳买卖股票时机含冷冻期 题目分析 非常经典的股票买卖问题了,股票一共有两种状态:天数和持有或者不持有。我们只需要处理好base cases就可以顺着推下去做了。这里要注意它含有1天的冷却期,那么我们在处理持有股票的时候要注意,买入股票必须要在前天不持有股票的情况下进行了~ 代码 阅读全文
posted @ 2020-07-10 09:10 ZJPang 阅读(98) 评论(0) 推荐(0) 编辑
摘要:题目链接 面试题 17.13. 恢复空格 题目分析 这个题是非常明显的区间DP问题,我们使用两个for循环就可以解决问题。第一重for循环用于定位sentence中每个字符的位置,第二重循环用于定位其长度。 但是在做的时候,我第二轮循环是从1开始一直找到当前字符的位置,这样会导致超时问题,只通过了6 阅读全文
posted @ 2020-07-09 10:15 ZJPang 阅读(97) 评论(0) 推荐(0) 编辑
摘要:题目链接 面试题 16.11. 跳水板 题目分析 这个题其实就是给了我们两种长度为shoter和longer的板子,要求我们合理的对其进行搭配,只要使用到的板子个数为k即可。 题目要求返回的长度是从小到大排列的。 那么我们可以从最短的进行入手了,因为k个最短的板子肯定是会构成返回值中的第一个数,所以 阅读全文
posted @ 2020-07-08 09:43 ZJPang 阅读(117) 评论(0) 推荐(0) 编辑
摘要:题目链接 63. 不同路径 II 题目分析 非常典型的一个DP问题。我们采用一个二维dp数组,dp[i][j]的意思是从0,0出发到obs[i][j]的路径和有多少条,注意边界值就行。 状态转移方程如下: if(obs[i][j] == 0) dp[i][j] = dp[i-1][j] + dp[i 阅读全文
posted @ 2020-07-06 10:32 ZJPang 阅读(81) 评论(0) 推荐(0) 编辑
摘要:题目链接 44. 通配符匹配 思路分析 这个题在LC上属于hard类型,其实还是归结到了DP问题上。这个DP跟另外一题10. 正则表达式匹配有点像,但是这个题我个人来说做起来比正则表达式要简单很多。 这个题中,s和p都有可能为空,那么我们要先做个base cases。当两个字符串都为空的时候,直接返 阅读全文
posted @ 2020-07-05 17:10 ZJPang 阅读(119) 评论(0) 推荐(0) 编辑
摘要:题目链接 108. 将有序数组转换为二叉搜索树 思路分析 这个题要求我们将一个升序的数组转变成二叉搜索树,那么其实思路很容易了,就是使用二分的方法,把数组中的中间位置的数据作为当前树的根节点,它的左边的数成为它的左子树,右边的数成为它的右子树。 代码实现 /** * Definition for a 阅读全文
posted @ 2020-07-03 09:58 ZJPang 阅读(96) 评论(0) 推荐(0) 编辑
摘要:题目链接 718. 最长重复子数组 题目分析 这个题很明显的DP问题,而且七月份的每日一题都是以DP为主,很好~~ 但是在这个DP问题上,我又搞砸了,把子数组和子序列搞混了,对于一般的题目来说,子序列默认不连续,子数组默认连续。 具体来到DP问题的转移方程来说,对于子序列问题,当判断的两个字符不相等 阅读全文
posted @ 2020-07-01 10:11 ZJPang 阅读(122) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示