摘要:
题目链接 415. 字符串相加 题目分析 这个题是个简单题,但是代码的写法可以有很多种。最基本的就是双指针同步去进行各位相加,然后用新的循环把多出来的那个数的剩余部分计算完。 这样写的话代码会比较复杂,我们可以把这里合成一个循环,直到所有条件都不符合了才结束,这里所说的条件是以下三个 字符串1长度结 阅读全文
摘要:
题目链接 1222. 可以攻击国王的皇后 思路分析 这个题有两种方法了,一种是由皇后去找国王,我们遍历所有的皇后,然后去检查它与国王之间是否有阻挡(同一行、同一列、同一对角线),但是这个办法写出来的代码非常的繁杂,而且还不方便。 于是第二种方法就出来了,因为国王只有一个,所以我们直接从国王的位置开始 阅读全文
摘要:
题目链接 1338. 数组大小减半 题目分析 这个题没啥好说的,只能直接先统计每个数字出现的次数,然后优先删除出现次数多的,因为题目要求我们得到的结果集是“最小”的,所以就利用贪心的思想了。 我写这个题主要是为了记录优先队列的使用,因为刷题那么久了,真正用过优先队列的次数却不是很多。 代码实现 cl 阅读全文
摘要:
https://leetcode-cn.com/problems/longest-increasing-path-in-a-matrix/ 这个题是看到被人的面经来刷的。 自己想的dp实现出来是错的,思路完全乱掉了。先贴代码吧。 class Solution { public int longest 阅读全文
摘要:
题目链接 91. 解码方法 题目分析 很明显的动态规划题,但是我在想状态转移方程的时候脑抽筋了,非得在dp[i-2]和dp[i-1]中取一个最大值然后加1,导致整个题没办法快速的解决。 其实这个题正解应该是这样的: 对于每一个字符,我们都应该判断单独一个字符和两个字符构成数字的情况 如果单独一个字符 阅读全文
摘要:
题目链接 18. 四数之和 题目分析 这个题没啥好说的,就是四数之和拆分成三数之和,然后三数之和固定一个边界值,在剩下的部分利用双指针寻找符合条件的值即可。 这个题主要是可以优化的地方很多,很多剪枝的地方还学不会,第一次做出来只击败了10%的人,慢的可怜,后来加入了最小值和最大值的判断,把整个算法优 阅读全文
摘要:
起因 最近有空,就想记录下自己的一些配置,所以写出了下面这篇教程 下载JDK 由于JDK11之后,Oracle JDK的license发生了一点变动,这里只选用openjdk进行教程。 首先我们进入清华大学的镜像源中找到openjdk的下载地址 按照自己所需要的版本和机器类型,选择不同的下载链接。我 阅读全文
摘要:
题目链接 994. 腐烂的橘子 题目分析 这个题好像没有什么偷鸡的方法,只能一步一步去模拟橘子腐烂的过程。我们首先要先统计好的橘子的个数,因为我们接下来要用这个判断模拟过程是否结束。 因为一开始grid中腐烂的橘子为2,为了区分每一个时刻腐烂的橘子的不同,我们利用一个lastBad变量来记录下这个橘 阅读全文
摘要:
题目链接 64. 最小路径和 题目分析 这个题应该是最容易的DP问题,dp[i][j]取决于dp[i-1][j]和dp[i][j-1]之中的最小值+grid[i][j],这个状态转移反映了当前格子是由左手边还是上边到达的,符合题目中的【只允许往下或者往右走】的特性 代码实现 class Soluti 阅读全文
摘要:
题目链接 剑指 Offer 11. 旋转数组的最小数字 题目分析 这个题很明显的二分查找题了,二分查找是最简单的算法,但是也是最难弄明白的算法。 这个题主要的问题是存在了相等的元素,如果遇到了相等的元素我们需要把right指针左移一位,做一个偏移然后再次检查。 然后就是当mid < right的时候 阅读全文