![](https://img-blog.csdnimg.cn/20200309154531681.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode刷题笔记
文章平均质量分 96
记录刷题笔记
三木加两木
2021加油!拿到大厂offer!!!
展开
-
LeetCode刷题笔记(Java)---更新至729题
文章目录前言笔记导航721. 账户合并722. 删除注释724. 寻找数组的中心索引738. 单调递增的数字725. 分隔链表前言需要开通vip的题目暂时跳过笔记导航点击链接可跳转到所有刷题笔记的导航链接721. 账户合并给定一个列表 accounts,每个元素 accounts[i] 是一个字符串列表,其中第一个元素 accounts[i][0] 是 名称 (name),其余元素是 emails 表示该账户的邮箱地址。现在,我们想合并这些账户。如果两个账户都有一些共同的邮箱地址,则两个账户必原创 2021-02-05 21:52:26 · 598 阅读 · 1 评论 -
LeetCode刷题笔记(Java)---第701-720题
文章目录前言笔记导航701. 二叉搜索树中的插入操作703. 数据流中的第 K 大元素705. 设计哈希集合706. 设计哈希映射707. 设计链表前言需要开通vip的题目暂时跳过笔记导航点击链接可跳转到所有刷题笔记的导航链接701. 二叉搜索树中的插入操作给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你原创 2021-02-01 19:56:43 · 323 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第681-700题
文章目录前言笔记导航682. 棒球比赛684. 冗余连接686. 重复叠加字符串匹配687. 最长同值路径前言需要开通vip的题目暂时跳过笔记导航点击链接可跳转到所有刷题笔记的导航链接682. 棒球比赛你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表 ops,其中 ops[i] 是你需要记录的第 i 项操作,ops 遵循下述规则:整数 x - 表示本回合新获得分数 x“原创 2021-01-22 11:00:42 · 762 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第661-680题
文章目录前言笔记导航661. 图片平滑器662. 二叉树最大宽度前言需要开通vip的题目暂时跳过笔记导航点击链接可跳转到所有刷题笔记的导航链接661. 图片平滑器包含整数的二维矩阵 M 表示一个图片的灰度。你需要设计一个平滑器来让每一个单元的灰度成为平均灰度 (向下舍入) ,平均灰度的计算是周围的8个单元和它本身的值求平均,如果周围的单元格不足八个,则尽可能多的利用它们。解答public int[][] imageSmoother(int[][] M) { int R原创 2021-01-12 20:46:45 · 524 阅读 · 3 评论 -
LeetCode刷题笔记(Java)---第641-660题
文章目录前言笔记导航641. 设计循环双端队列643. 子数组最大平均数 I645. 错误的集合前言需要开通vip的题目暂时跳过笔记导航点击链接可跳转到所有刷题笔记的导航链接641. 设计循环双端队列设计实现双端队列。你的实现需要支持以下操作:MyCircularDeque(k):构造函数,双端队列的大小为k。insertFront():将一个元素添加到双端队列头部。 如果操作成功返回 true。insertLast():将一个元素添加到双端队列尾部。如果操作成功返回 true。de原创 2021-01-06 10:17:00 · 659 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第621-640题
文章目录前言笔记导航622. 设计循环队列623. 在二叉树中增加一行628. 三个数的最大乘积629. K个逆序对数组630. 课程表 III632. 最小区间633. 平方数之和636. 函数的独占时间637. 二叉树的层平均值638. 大礼包前言需要开通vip的题目暂时跳过笔记导航点击链接可跳转到所有刷题笔记的导航链接622. 设计循环队列设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲原创 2021-01-04 10:42:08 · 377 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第601-620题
文章目录前言笔记导航605. 种花问题606. 根据二叉树创建字符串609. 在系统中查找重复文件611. 有效三角形的个数617. 合并二叉树前言需要开通vip的题目暂时跳过笔记导航点击链接可跳转到所有刷题笔记的导航链接605. 种花问题假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵原创 2021-01-01 17:20:08 · 382 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第581-600题
文章目录前言笔记导航581. 最短无序连续子数组583. 两个字符串的删除操作前言需要开通vip的题目暂时跳过笔记导航点击链接可跳转到所有刷题笔记的导航链接581. 最短无序连续子数组给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。你找到的子数组应是最短的,请输出它的长度。解答//方法1public int findUnsortedSubarray(int[] nums) { int len = nums.l原创 2020-12-24 12:41:56 · 341 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第561-580题
文章目录前言笔记导航561.数组拆分 I563. 二叉树的坡度564. 寻找最近的回文数565. 数组嵌套566. 重塑矩阵567. 字符串的排列572. 另一个树的子树575. 分糖果前言需要开通vip的题目暂时跳过笔记导航点击链接可跳转到所有刷题笔记的导航链接561.数组拆分 I给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。返回该原创 2020-12-23 10:24:06 · 501 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第541-560题
文章目录前言笔记导航541. 反转字符串 II542. 01 矩阵543. 二叉树的直径546. 移除盒子547. 朋友圈前言需要开通vip的题目暂时跳过笔记导航点击链接可跳转到所有刷题笔记的导航链接541. 反转字符串 II给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。解答public S原创 2020-12-18 15:25:51 · 520 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第521-540题
文章目录前言笔记导航521. 最长特殊序列 Ⅰ522. 最长特殊序列 II523. 连续的子数组和前言需要开通vip的题目暂时跳过笔记导航点击链接可跳转到所有刷题笔记的导航链接521. 最长特殊序列 Ⅰ给你两个字符串,请你从这两个字符串中找出最长的特殊序列。「最长特殊序列」定义如下:该序列为某字符串独有的最长子序列(即不能是其他字符串的子序列)。子序列 可以通过删去字符串中的某些字符实现,但不能改变剩余字符的相对顺序。空序列为所有字符串的子序列,任何字符串为其自身的子序列。输入为两个字符串原创 2020-12-07 10:08:15 · 637 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第501-520题
文章目录前言笔记导航502. IPO503. 下一个更大元素 II504. 七进制数506. 相对名次507. 完美数508. 出现次数最多的子树元素和509. 斐波那契数514. 自由之路515. 在每个树行中找最大值516. 最长回文子序列前言需要开通vip的题目暂时跳过笔记导航点击链接可跳转到所有刷题笔记的导航链接文章目录前言笔记导航502. IPO503. 下一个更大元素 II504. 七进制数506. 相对名次507. 完美数508. 出现次数最多的子树元素和509. 斐波那契数514.原创 2020-12-02 09:51:10 · 593 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第481-500题
文章目录前言笔记导航481. 神奇字符串482. 密钥格式化485. 最大连续1的个数前言需要开通vip的题目暂时跳过笔记导航点击链接可跳转到所有刷题笔记的导航链接481. 神奇字符串神奇的字符串 S 只包含 ‘1’ 和 ‘2’,并遵守以下规则:字符串 S 是神奇的,因为串联字符 ‘1’ 和 ‘2’ 的连续出现次数会生成字符串 S 本身。字符串 S 的前几个元素如下:S = “1221121221221121122 …”如果我们将 S 中连续的 1 和 2 进行分组,它将变成:1 22原创 2020-11-21 20:47:42 · 470 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第461-480题
文章目录前言笔记导航461. 汉明距离462. 最少移动次数使数组元素相等 II463. 岛屿的周长464. 我能赢吗467. 环绕字符串中唯一的子字符串468. 验证IP地址470. 用 Rand7() 实现 Rand10()472. 连接词473. 火柴拼正方形前言需要开通vip的题目暂时跳过笔记导航点击链接可跳转到所有刷题笔记的导航链接461. 汉明距离两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。解答pu原创 2020-11-18 19:12:52 · 721 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第441-460题
文章目录前言笔记导航441. 排列硬币442. 数组中重复的数据443. 压缩字符串445. 两数相加 II前言需要开通vip的题目暂时跳过笔记导航点击链接可跳转到所有刷题笔记的导航链接441. 排列硬币你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币。给定一个数字 n,找出可形成完整阶梯行的总行数。n 是一个非负整数,并且在32位有符号整型的范围内。解答public int arrangeCoins(int n) { int原创 2020-11-06 10:50:30 · 545 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第421-440题
文章目录前言笔记导航421. 数组中两个数的最大异或值423. 从英文中重建数字424. 替换后的最长重复字符427. 建立四叉树前言需要开通vip的题目暂时跳过笔记导航点击链接可跳转到所有刷题笔记的导航链接421. 数组中两个数的最大异或值给定一个非空数组,数组中元素为 a0, a1, a2, … , an-1,其中 0 ≤ ai < 231 。找到 ai 和aj 最大的异或 (XOR) 运算结果,其中0 ≤ i, j < n 。你能在O(n)的时间解决这个问题吗?解原创 2020-10-31 12:42:11 · 456 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第401-420题
文章目录前言笔记导航401. 二进制手表402. 移掉K位数字前言需要开通vip的题目暂时跳过笔记导航点击链接可跳转到所有刷题笔记的导航链接401. 二进制手表二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。例如,上面的二进制手表读取 “3:25”。给定一个非负整数 n 代表当前 LED 亮着的数量,返回所有可能的时间。解答int[] hs = {1,2,4,8};原创 2020-10-21 10:23:26 · 678 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第381-400题
文章目录前言笔记导航381.O(1) 时间插入、删除和获取随机元素 - 允许重复前言需要开通vip的题目暂时跳过笔记导航点击链接可跳转到所有刷题笔记的导航链接381.O(1) 时间插入、删除和获取随机元素 - 允许重复设计一个支持在平均 时间复杂度 O(1) 下, 执行以下操作的数据结构。注意: 允许出现重复元素。insert(val):向集合中插入元素 val。remove(val):当 val 存在时,从集合中移除一个 val。getRandom:从现有集合中随机获取一个原创 2020-10-01 13:56:25 · 616 阅读 · 2 评论 -
LeetCode刷题笔记(Java)---第361-380题
文章目录前言笔记导航363.矩形区域不超过 K 的最大数值和前言需要开通vip的题目暂时跳过笔记导航点击链接可跳转到所有刷题笔记的导航链接363.矩形区域不超过 K 的最大数值和给定一个非空二维矩阵 matrix 和一个整数 k,找到这个矩阵内部不大于 k 的最大矩形和。说明:矩阵内的矩形区域面积必须大于 0。如果行数远大于列数,你将如何解答呢?解答public int maxSumSubmatrix(int[][] matrix, int k) { in原创 2020-09-23 10:53:06 · 584 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第341-360题
文章目录前言笔记导航341.扁平化嵌套列表迭代器前言需要开通vip的题目暂时跳过笔记导航点击链接可跳转到所有刷题笔记的导航链接341.扁平化嵌套列表迭代器给你一个嵌套的整型列表。请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数。列表中的每一项或者为一个整数,或者是另一个列表。其中列表的元素也可能是整数或是其他列表。解答public class NestedIterator implements Iterator<Integer> { private St原创 2020-09-15 09:31:13 · 430 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第321-340题
文章目录前言笔记导航321. 拼接最大数前言需要开通vip的题目暂时跳过笔记导航点击链接可跳转到所有刷题笔记的导航链接321. 拼接最大数给定长度分别为 m 和 n 的两个数组,其元素由 0-9 构成,表示两个自然数各位上的数字。现在从这两个数组中选出 k (k <= m + n) 个数字拼接成一个新的数,要求从同一个数组中取出的数字保持其在原数组中的相对顺序。求满足该条件的最大数。结果返回一个表示该最大数的长度为 k 的数组。说明: 请尽可能地优化你算法的时间和空间复杂度。解答原创 2020-08-27 10:28:40 · 705 阅读 · 0 评论 -
LeetCode刷题目录
文章目录前言笔记链接1-18题19-40题41-60题61-80题81-100题101-120题121-140题141-160题161-180题181-200题201-220题221-240题241-260题261-280题281-300题301-320题前言这篇博客作为其他刷题笔记的导航笔记链接1-18题19-40题41-60题61-80题81-100题101-120题121-140题141-160题161-180题181-200题201-220题221-240题241-2原创 2020-08-15 11:35:42 · 843 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第301-320题
文章目录前言301. 删除无效的括号前言需要开通vip的题目暂时跳过301. 删除无效的括号删除最小数量的无效括号,使得输入的字符串有效,返回所有可能的结果。说明: 输入可能包含了除 ( 和 ) 以外的字符。解答private HashSet<String> set = new HashSet<>(); int minModify = Integer.MAX_VALUE; public List<String> removeInval原创 2020-08-14 09:38:12 · 482 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第281-300题
文章目录282.给表达式添加运算符282.给表达式添加运算符给定一个仅包含数字 0-9 的字符串和一个目标值,在数字之间添加二元运算符(不是一元)+、- 或 * ,返回所有能够得到目标值的表达式。解答 public ArrayList<String> answer; public String digits; public long target; public void backTrack(int index, long currentVal,long原创 2020-08-04 10:03:48 · 390 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第261-280题
文章目录前沿263. 丑数前沿需要开通vip的题目暂时跳过263. 丑数编写一个程序判断给定的数是否为丑数。丑数就是只包含质因数 2, 3, 5 的正整数。解答 public boolean isUgly(int num) { if(num <= 0)return false; if(num == 1)return true; if(num % 5 == 0)return isUgly(num/5); if(num原创 2020-07-28 08:57:52 · 453 阅读 · 0 评论 -
LeetCode刷题笔记(Java)--- 241-260题
文章目录241.为运算表达式设计优先级241.为运算表达式设计优先级给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。解答 HashMap<String,List<Integer>> map = new HashMap<>();//用于记录已经递归过的字符串。 public List<Integer> diffWaysToCom原创 2020-07-22 09:37:50 · 491 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第221-240题
文章目录221. 最大正方形222. 完全二叉树的节点个数223. 矩形面积224. 基本计算器225. 用队列实现栈226. 翻转二叉树227. 基本计算器 II228. 汇总区间229. 求众数 II230. 二叉搜索树中第K小的元素231. 2的幂232. 用栈实现队列233. 数字 1 的个数234. 回文链表235. 二叉搜索树的最近公共祖先236. 二叉树的最近公共祖先221. 最大正方形在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。解答原创 2020-07-18 10:39:28 · 548 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第201-220题
文章目录201. 数字范围按位与202. 快乐数203. 移除链表元素204. 计数质数201. 数字范围按位与给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。解答 public static int rangeBitwiseAnd(int m, int n) { int offset = 0; while (m != n) {原创 2020-05-19 09:31:59 · 504 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第181-200题
文章目录前言187. 重复的DNA序列188. 买卖股票的最佳时机 IV189. 旋转数组前言关于数据库的题目略过187. 重复的DNA序列所有 DNA 都由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。编写一个函数来查找 DNA 分子中所有出现超过一次的 10 个字母长的序列(子串)。解答 public List<String> findRepeatedDnaSeq原创 2020-05-16 11:17:45 · 446 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第161-180题
文章目录162. 寻找峰值164. 最大间距165. 比较版本号162. 寻找峰值峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。解答 //二分查找 public int findPeakElement(int[] nums) { int lef原创 2020-05-09 14:38:45 · 566 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第141-160题
文章目录141. 环形链表141. 环形链表给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:示例 2:解答 public boolean hasCycle(ListNode head) { if (head == n...原创 2020-04-30 20:52:36 · 434 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第121-140题
文章目录全部章节1-18题19-40题41-60题61-80题81-100题101-120题121. 买卖股票的最佳时机全部章节1-18题19-40题41-60题61-80题81-100题101-120题121. 买卖股票的最佳时机给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获...原创 2020-04-21 09:42:10 · 852 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第101-120题
文章目录全部章节1-18题19-40题41-60题61-80题81-100题101-120题101. 对称二叉树全部章节1-18题19-40题41-60题61-80题81-100题101-120题101. 对称二叉树给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是下面这个 [1,2,2,null,3,null,3] 则不是...原创 2020-04-12 18:05:27 · 602 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第81-100题
文章目录全部章节81. 搜索旋转排序数组 II全部章节81. 搜索旋转排序数组 II假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。示例 1:示例 2:进阶:这是 搜索旋转排序数组 ...原创 2020-04-03 20:21:39 · 574 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第61-80题
文章目录全部章节1-18题19-40题41-60题61-80题61. 旋转链表全部章节1-18题19-40题41-60题61-80题61. 旋转链表给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:示例 2:解答 public static ListNode rotateRight(ListNode head, int k...原创 2020-03-26 18:37:13 · 971 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第41-60题
目录文章目录目录其他篇章1-18题19-40题41. 缺失的第一个正数其他篇章1-18题19-40题41. 缺失的第一个正数给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:示例 2:示例 3:说明:你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。解答 public int firstMissingPositive(int[...原创 2020-03-17 10:42:15 · 645 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第19-40题
文章目录其他篇章1-18题19.删除链表的倒数第N个节点其他篇章1-18题19.删除链表的倒数第N个节点给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?解答 class ListNode { int val; ListNode next; ...原创 2020-03-09 12:17:47 · 3798 阅读 · 0 评论 -
LeetCode刷题笔记(Java)---第1-18题
文章目录两数之和两数相加无重复字符串的最长子串寻找两个有序数组的中位数两数之和给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:解答:private static int[] twoSum(int[] nums, int target...原创 2020-03-03 14:04:18 · 1520 阅读 · 1 评论