Leecode
文章平均质量分 52
Leecode
来老铁干了这碗代码
算法爱好者 终生学习践行者 雨雪刀霜阻不住 不成大神誓不休
展开
-
Leecode题解汇总(附题型归类)
为方便量化和总结经验,记录一下个人的Leecode刷题记录,之前的刷题并没有收录进去,有时间会统一整理。题目题解类型Leecode 5916. 转化数字的最小运算数C++解题报告BFS原创 2021-10-31 22:56:36 · 9068 阅读 · 0 评论 -
Leecode 222. 完全二叉树的节点个数——Leecode日常刷题系列
题目链接:https://leetcode-cn.com/problems/count-complete-tree-nodes/题解汇总:https://leetcode-cn.com/problems/max-increase-to-keep-city-skyline/题目描述给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层原创 2021-12-14 23:15:00 · 1731 阅读 · 0 评论 -
【二分法万能模板】Leecode 74. 搜索二维矩阵——Leecode日常刷题系列
二分法万能模板,告别死循环和越界!原创 2021-12-14 22:15:00 · 395 阅读 · 0 评论 -
【二分法万能模板,告别死循环、越界】Leecode 69. Sqrt(x)——Leecode日常刷题系列
二叉树万能模板!!!!!!!!!!!!!告别令人抓狂的细节问题!!!!!!!!!原创 2021-12-14 00:30:00 · 452 阅读 · 0 评论 -
【解题报告】Leecode 372. 超级次方——Leecode每日一题系列
通俗易懂讲解快速幂原创 2021-12-14 00:00:00 · 241 阅读 · 0 评论 -
【解题报告】Leecode 748. 最短补全词——Leecode每日一题系列
题目链接:https://leetcode-cn.com/problems/shortest-completing-word/题解汇总:https://leetcode-cn.com/problems/max-increase-to-keep-city-skyline/题目描述给你一个字符串 licensePlate 和一个字符串数组 words ,请你找出并返回 words 中的 最短补全词 。补全词 是一个包含 licensePlate 中所有字母的单词。在匹配 licensePlat原创 2021-12-13 15:59:29 · 311 阅读 · 0 评论 -
【解题报告】Leecode 807. 保持城市天际线——Leecode每日刷题系列
题目链接:https://leetcode-cn.com/problems/max-increase-to-keep-city-skyline/题解汇总:https://leetcode-cn.com/problems/max-increase-to-keep-city-skyline/题目描述在二维数组grid中,grid[i][j]代表位于某处的建筑物的高度。 我们被允许增加任何数量(不同建筑物的数量可能不同)的建筑物的高度。 高度 0 也被认为是建筑物。最后,从新数组的所有四个方向(即顶原创 2021-12-13 09:26:47 · 287 阅读 · 0 评论 -
【二分查找万能模板,告别死循环、告别越界】Leecode 34. 在排序数组中查找元素的第一个和最后一个位置
二分查找万能模板,考虑了所有细节,告别死循环,告别越界原创 2021-12-11 22:59:02 · 225 阅读 · 0 评论 -
【解题报告】Leecode 643. 子数组最大平均数 I——Leecode 刷题系列
题目链接:https://leetcode-cn.com/problems/maximum-average-subarray-i/题解汇总:https://zhanglong.blog.csdn.net/article/details/121071779题目描述给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数。任何误差小于 10-5 的答案都将被视为正确答案。示例 1:输入:nums = [1,12原创 2021-11-28 16:00:22 · 461 阅读 · 0 评论 -
【解题报告】Leecode 519. 随机翻转矩阵——Leecode每日一题系列
今天是坚持每日一题打卡的第二十六天题目链接:https://leetcode-cn.com/problems/random-flip-matrix/solution/题解汇总:https://zhanglong.blog.csdn.net/article/details/121071779题目描述给你一个 m x n 的二元矩阵 matrix ,且所有值被初始化为 0 。请你设计一个算法,随机选取一个满足 matrix[i][j] == 0 的下标 (i, j) ,并将它的值变为 1 。所有满原创 2021-11-28 15:24:05 · 197 阅读 · 0 评论 -
【解题报告】Leecode 438. 找到字符串中所有字母异位词——Leecode每日一题系列
今天是坚持每日一题打卡的第二十七天题目链接:https://leetcode-cn.com/problems/find-all-anagrams-in-a-string/题解汇总:https://zhanglong.blog.csdn.net/article/details/121071779题目描述给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。示例 1原创 2021-11-28 15:17:51 · 157 阅读 · 0 评论 -
【解题报告】Leecode 700. 二叉搜索树中的搜索——Leecode每日一题
今天是坚持每日一题打卡的第二十四天题目链接:https://leetcode-cn.com/problems/search-in-a-binary-search-tree/题解汇总:https://zhanglong.blog.csdn.net/article/details/121071779题目描述给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。例如,给定二叉搜索树:原创 2021-11-26 23:00:00 · 196 阅读 · 0 评论 -
【解题报告】Leecode 859. 亲密字符串——Leecode每日一题系列
今天是坚持每日一题打卡的第二十四天题目链接:https://leetcode-cn.com/problems/buddy-strings/题解汇总:https://zhanglong.blog.csdn.net/article/details/121071779题目描述给你两个字符串 s 和 goal ,只要我们可以通过交换 s 中的两个字母得到与 goal 相等的结果,就返回 true ;否则返回 false 。交换字母的定义是:取两个下标 i 和 j (下标从 0 开始)且满足 i原创 2021-11-24 23:30:00 · 421 阅读 · 0 评论 -
【解题报告】Leecode 423. 从英文中重建数字——Leecode每日一题系列
今天是坚持每日一题打卡的第二十五天题目链接:https://leetcode-cn.com/problems/reconstruct-original-digits-from-english/题解汇总:https://zhanglong.blog.csdn.net/article/details/121071779题目描述给你一个字符串 s ,其中包含字母顺序打乱的用英文单词表示的若干数字(0-9)。按 升序 返回原始的数字。示例 1:输入:s = “owoztneoer”输出:“原创 2021-11-24 22:45:00 · 842 阅读 · 0 评论 -
【解题报告】Leecode 384. 打乱数组——Leecode每日一题系列
今天是坚持每日一题打卡的第二十二天题目链接:https://leetcode-cn.com/problems/maximum-depth-of-n-ary-tree/submissions/题解汇总:https://zhanglong.blog.csdn.net/article/details/121071779题目描述给你一个整数数组 nums ,设计算法来打乱一个没有重复元素的数组。实现 Solution class:Solution(int[] nums) 使用整数数组 num原创 2021-11-22 14:29:33 · 204 阅读 · 0 评论 -
【解题报告】Leecode 559. N 叉树的最大深度——Leecode每日一题
今天是坚持每日一题打卡的第二十二天题目链接:https://leetcode-cn.com/problems/maximum-depth-of-n-ary-tree/submissions/题解汇总:https://zhanglong.blog.csdn.net/article/details/121071779题目描述给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。原创 2021-11-21 20:53:08 · 165 阅读 · 0 评论 -
【最优解】Leecode 594. 最长和谐子序列——Leecode每日一题系列
今天是坚持每日一题打卡的第二十二天题目链接:https://leetcode-cn.com/problems/longest-harmonious-subsequence/题解汇总:https://zhanglong.blog.csdn.net/article/details/121071779题目描述和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。数组的子序列是一个由数组派生原创 2021-11-20 12:30:25 · 196 阅读 · 0 评论 -
解题报告-Leecode 563. 二叉树的坡度——Leecode每日一题系列
今天是坚持每日一题打卡的第二十二天题目链接:https://leetcode-cn.com/problems/binary-tree-tilt/题解汇总:https://zhanglong.blog.csdn.net/article/details/121071779题目描述给定一个二叉树,计算 整个树 的坡度 。一个树的 节点的坡度 定义即为,该节点左子树的节点之和和右子树节点之和的 差的绝对值 。如果没有左子树的话,左子树的节点之和为 0 ;没有右子树的话也是一样。空结点的坡度是 0原创 2021-11-18 20:48:05 · 186 阅读 · 0 评论 -
C++题解-Leecode 318. 最大单词长度乘积——Leecode每日一题系列
今天是坚持每日一题打卡的第二十二天题目链接:https://leetcode-cn.com/problems/maximum-product-of-word-lengths/题解汇总:https://zhanglong.blog.csdn.net/article/details/121071779题目描述给定一个字符串数组 words,找到 length(word[i]) * length(word[j]) 的最大值,并且这两个单词不含有公共字母。你可以认为每个单词只包含小写字母。如果不存在原创 2021-11-17 21:18:09 · 212 阅读 · 0 评论 -
题意解读+详细题解-Leecode 319. 灯泡开关——Leecode每日一题系列
今天是坚持每日一题打卡的第二十天题目链接:https://leetcode-cn.com/problems/bulb-switcher/题解汇总:https://zhanglong.blog.csdn.net/article/details/121071779题目描述初始时有 n 个灯泡处于关闭状态。第一轮,你将会打开所有灯泡。接下来的第二轮,你将会每两个灯泡关闭一个。第三轮,你每三个灯泡就切换一个灯泡的开关(即,打开变关闭,关闭变打开)。第 i 轮,你每 i 个灯泡就切换一个灯泡的开关原创 2021-11-15 23:15:00 · 359 阅读 · 0 评论 -
C++题解-Leecode 520. 检测大写字母——Leecode每日一题系列
今天是坚持每日一题打卡的第十八天题目链接:https://leetcode-cn.com/problems/detect-capital/题解汇总:https://zhanglong.blog.csdn.net/article/details/121071779题目描述我们定义,在以下情况时,单词的大写用法是正确的:全部字母都是大写,比如 “USA” 。单词中所有字母都不是大写,比如 “leetcode” 。如果单词不只含有一个字母,只有首字母大写, 比如 “Google” 。给你原创 2021-11-13 10:10:38 · 682 阅读 · 0 评论 -
C++题解-Leecode 375. 猜数字大小 II——Leecode每日一题系列
今天是坚持每日一题打卡的第十七天题目链接:https://leetcode-cn.com/problems/guess-number-higher-or-lower-ii/submissions/题解汇总:https://zhanglong.blog.csdn.net/article/details/121071779题目描述我们正在玩一个猜数游戏,游戏规则如下:我从 1 到 n 之间选择一个数字。你来猜我选了哪个数字。如果你猜到正确的数字,就会 赢得游戏 。如果你猜错了,那么我会告诉原创 2021-11-13 09:54:59 · 264 阅读 · 0 评论 -
12行代码AC_Leecode 495. 提莫攻击——Leecode每日一题系列
今天是坚持每日一题打卡的第十五天题目链接:https://leetcode-cn.com/problems/teemo-attacking/题解汇总:https://zhanglong.blog.csdn.net/article/details/121071779题目描述在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。当提莫攻击艾希,艾希的中毒状态正好持续 duration 秒。正式地讲,提莫在 t 发起发起攻击意味着艾原创 2021-11-10 22:30:00 · 198 阅读 · 0 评论 -
24行代码-Leecode 2063. 所有子字符串中的元音——Leecode周赛系列
今天是坚持每日一题打卡的第十一天题目链接:https://leetcode-cn.com/problems/missing-number//题解汇总:https://zhanglong.blog.csdn.net/article/details/121071779题目描述给你一个字符串 word ,返回 word 的所有子字符串中 元音的总数 ,元音是指 ‘a’、‘e’、‘i’、‘o’ 和 ‘u’ 。子字符串 是字符串中一个连续(非空)的字符序列。注意:由于对 word 长度的限制比原创 2021-11-08 23:15:00 · 4028 阅读 · 0 评论 -
18行代码AC-Leecode 299. 猜数字游戏——Leecode每日一题系列
今天是坚持每日一题打卡的第十三天题目链接:https://leetcode-cn.com/problems/bulls-and-cows/题解汇总:https://zhanglong.blog.csdn.net/article/details/121071779题目描述你在和朋友一起玩 猜数字(Bulls and Cows)游戏,该游戏规则如下:写出一个秘密数字,并请朋友猜这个数字是多少。朋友每猜测一次,你就会给他一个包含下述信息的提示:猜测数字中有多少位属于数字和确切位置都猜对了(原创 2021-11-08 20:15:00 · 220 阅读 · 0 评论 -
【双100%解法】剑指 Offer 22. 链表中倒数第k个节点
立志用最少的代码做最高效的表达输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.提交截图:/** * Definition for singly-linked list原创 2021-06-15 13:21:28 · 294 阅读 · 1 评论 -
【简洁+注释】剑指 Offer 32 - II. 从上到下打印二叉树 II
立志用最少的代码做最高效的表达从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。例如:给定二叉树: [3,9,20,null,null,15,7],返回其层次遍历结果:[[3],[9,20],[15,7]]提示:节点总数 <= 1000class Solution{ public List<List<Integer>> levelOrder(TreeNode root) { if(root =原创 2021-06-17 18:41:30 · 247 阅读 · 8 评论 -
【附可运行代码】剑指 Offer 16. 数值的整数次方
立志用最少的代码做最高效的表达实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。示例 1:输入:x = 2.00000, n = 10输出:1024.00000示例 2:输入:x = 2.10000, n = 3输出:9.26100示例 3:输入:x = 2.00000, n = -2输出:0.25000解释:2-2 = 1/22 = 1/4 = 0.25提示:-100.0 < x < 100.0原创 2021-06-14 11:42:55 · 503 阅读 · 2 评论 -
【简洁写法】剑指 Offer 32 - I. 从上到下打印二叉树
立志用最少的代码做最高效的表达从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树: [3,9,20,null,null,15,7],返回:[3,9,20,15,7]提示:节点总数 <= 1000层序遍历。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeN原创 2021-06-17 17:50:43 · 224 阅读 · 0 评论 -
【双100%解法】LeetCode 141 【剑指Offer 23】链表中环的入口节点
立志用最少的代码做最高效的表达给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。示例 1:输入:head = [3,2,0,-4], pos = 1输出:原创 2021-06-15 17:54:24 · 316 阅读 · 1 评论 -
【三次优化】剑指 Offer 35. 复杂链表的复制
立志用最少代码做最高效的表达请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。示例 1:输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]示例 2:输入:head = [[1,1],[2,1]]输出:[[1,1],[2,1]]原创 2021-06-18 22:54:42 · 366 阅读 · 0 评论 -
剑指 Offer 07. 重建二叉树【千字分析,三种方法】
立志用最少的代码做最高效的表达输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3/ \9 20/ \15 7限制:0 <= 节点个数 <= 5000文章目录1. 储备知识2. 分析3. 解法:递归实现4. 一次优化:HashMap.原创 2021-05-31 12:50:07 · 416 阅读 · 3 评论 -
【0ms优化】剑指 Offer 18. 删除链表的节点
立志用最少的代码做最高效的表达给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5,1,9], val = 1输出: [4,5,9]解释: 给定你链表中值为 1 的第原创 2021-06-15 11:07:57 · 277 阅读 · 0 评论 -
【简洁写法】剑指 Offer 30. 包含min函数的栈
立志用最少的代码做最高效的表达定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); --> 返回 -3.minStack.pop();minStack.top();原创 2021-06-16 20:32:37 · 299 阅读 · 6 评论 -
【双100%解法】剑指 Offer 24. 反转链表
立志用最少的代码做最高效的表达定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000理解链表最好的方法,就是在草稿纸上画下来手推!***代码展示/** * Definition for singly-linked list. * public c原创 2021-06-15 19:12:32 · 287 阅读 · 1 评论 -
【速看,双100%】剑指 Offer 14- I. 剪绳子 I
立志用最少的代码做最高效的表达给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1示例 2:输入: 10输出: 36解释: 10 = 3 +原创 2021-06-13 23:46:02 · 251 阅读 · 1 评论 -
【击败时间100%】剑指 Offer 38. 字符串的排列
立志用最少的代码做最高效的表达输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = “abc”输出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”]限制:1 <= s 的长度 <= 8核心思路:采用交换元素的方式进行递归,从而实现全排列。优化:尽可能的将参数设置为成员变量(可以理解为全局变量),而不是放在dfs的参数中传递,后者会使效率降低。class Soluti原创 2021-06-19 00:27:17 · 313 阅读 · 0 评论 -
剑指 Offer 34. 二叉树中和为某一值的路径【附完整可运行代码】
立志用最少的代码做最高效的表达输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例:给定如下二叉树,以及目标和 target = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:[[5,4,11,2],[5,8,4,5]]提示原创 2021-06-18 12:56:17 · 379 阅读 · 2 评论 -
【双100%提交】剑指 Offer 09. 用两个栈实现队列
立志用最少的代码做最高效的表达用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:[“CQueue”,“appendTail”,“deleteHead”,“deleteHead”][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:[“CQueue”,“deleteHe原创 2021-06-09 20:32:06 · 250 阅读 · 3 评论 -
【完整可运行代码】剑指 Offer 29. 顺时针打印矩阵
立志用最少的代码做最高效的表达输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]限制:0 <= matrix.length <= 1000 <= matrix[原创 2021-06-16 18:04:24 · 299 阅读 · 8 评论