![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
文章平均质量分 54
CodingLemon.
blog:http://www.codinglemon.cn/
展开
-
17. 电话号码的字母组合
1.题目描述给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = “23”输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]示例 2:输入:digits = “”输出:[]示例 3:输入:digits = “2”输出:[“a”,“b”,“c”]提示:0 <= di原创 2021-09-26 19:18:39 · 58 阅读 · 0 评论 -
39. 组合总和
1.题目描述给定一个无重复元素的正整数数组 candidates 和一个正整数 target ,找出 candidates 中所有可以使数字和为目标数 target 的唯一组合。candidates 中的数字可以无限制重复被选取。如果至少一个所选数字数量不同,则两种组合是唯一的。对于给定的输入,保证和为 target 的唯一组合数少于 150 个。示例 1:输入: candidates原创 2021-09-24 16:42:20 · 56 阅读 · 0 评论 -
47. 全排列 II
1.题目描述给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。示例 1:输入:nums = [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]示例 2:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]提示:1 <= nums.length <= 8-10 <= nums[i] <= 10来源:力扣(LeetCode)原创 2021-09-24 11:10:11 · 88 阅读 · 0 评论 -
78. 子集
1.题目描述给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]]提示:1 <= nums.length <= 10-10 <= nums[i] <= 10nums 中原创 2021-09-23 15:16:13 · 106 阅读 · 0 评论 -
797. 所有可能的路径
1.题目描述给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出 (不要求按特定顺序)二维数组的第 i 个数组中的单元都表示有向图中 i 号节点所能到达的下一些节点,空就是没有下一个结点了。译者注:有向图是有方向的,即规定了 a→b 你就不能从 b→a 。示例 1:输入:graph = [[1,2],[3],[3],[]]输出:[[0,1,3],[0,2,3]]解释:有两条路径 0 -> 1 -&原创 2021-09-23 14:51:09 · 161 阅读 · 0 评论 -
130. 被围绕的区域
1.题目描述给你一个 m x n 的矩阵 board ,由若干字符 ‘X’ 和 ‘O’ ,找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。示例 1:输入:board = [[“X”,“X”,“X”,“X”],[“X”,“O”,“O”,“X”],[“X”,“X”,“O”,“X”],[“X”,“O”,“X”,“X”]]输出:[[“X”,“X”,“X”,“X”],[“X”,“X”,“X”,“X”],[“X”,“X”,“X”,“X”],[“X”,“O”,“X”,“原创 2021-09-23 10:44:36 · 88 阅读 · 0 评论 -
572. 另一棵树的子树
1.题目描述给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。示例 1:输入:root = [3,4,5,1,2], subRoot = [4,1,2]输出:true示例 2:输入:root = [3,4,5,1,2,null,null,null,原创 2021-09-22 19:30:25 · 62 阅读 · 0 评论 -
117. 填充每个节点的下一个右侧节点指针 II
1.题目描述给定一个二叉树struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。进阶:你只能使用常量级额外空间。使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。示例:输入:root = [1,2,3原创 2021-09-22 19:30:02 · 75 阅读 · 0 评论 -
547. 省份数量
1.题目描述有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。返回矩阵中 省份 的数量。示例 1:输入:isC原创 2021-09-22 16:02:38 · 82 阅读 · 0 评论 -
200. 岛屿数量
1.题目描述给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [[“1”,“1”,“1”,“1”,“0”],[“1”,“1”,“0”,“1”,“0”],[“1”,“1”,“0”,“0”,“0”],[“0”,“0”,“0”,“0”,“0”]]输出:1示例 2:输入:grid = [[“1原创 2021-09-22 15:10:43 · 39 阅读 · 0 评论 -
209. 长度最小的子数组
1.题目描述给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例 1:输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。示例 2:输入:target =原创 2021-09-17 11:55:15 · 39 阅读 · 0 评论 -
713. 乘积小于K的子数组
1.题目描述给定一个正整数数组 nums和整数 k 。请找出该数组内乘积小于 k 的连续的子数组的个数。示例 1:输入: nums = [10,5,2,6], k = 100输出: 8解释: 8个乘积小于100的子数组分别为: [10], [5], [2], [6], [10,5], [5,2], [2,6], [5,2,6]。需要注意的是 [10,5,2] 并不是乘积小于100的子数组。示例 2:输入: nums = [1,2,3], k = 0输出:原创 2021-09-16 16:47:30 · 52 阅读 · 0 评论 -
11. 盛最多水的容器
1.题目描述给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,原创 2021-09-15 19:39:32 · 44 阅读 · 0 评论 -
986. 区间列表的交集
1. 题目描述给定两个由一些 闭区间 组成的列表,firstList 和 secondList ,其中 firstList[i] = [starti, endi] 而 secondList[j] = [startj, endj] 。每个区间列表都是成对 不相交 的,并且 已经排序 。返回这 两个区间列表的交集 。形式上,闭区间 [a, b](其中 a <= b)表示实数 x 的集合,而 a <= x <= b 。两个闭区间原创 2021-09-15 16:05:07 · 122 阅读 · 0 评论 -
844. 比较含退格的字符串
1.题目描述给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。注意:如果对空文本输入退格字符,文本继续为空。示例 1:输入:S = “ab#c”, T = “ad#c”输出:true解释:S 和 T 都会变成 “ac”。示例 2:输入:S = “ab##”, T = “c#d#”输出:true解释:S 和 T 都会变成 “”。示例 3:输入:S = “a##c”, T = “#a#c”输出:true解释:S 和原创 2021-09-15 16:04:02 · 68 阅读 · 0 评论 -
深度优先搜索(DFS)----LeetCode刷题篇
欢迎访问我的blog http://www.codinglemon.cn/0. 深度优先搜索(DFS)先简单了解一下DFS,其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只访问一次。DFS思修基于递归思想,通过递归的形式来缩小问题规模,把一件事分割成若干个相同的小事,逐步完成。深度优先搜索的步骤分为 1.递归下去 2.回溯上来。顾名思义,深度优先,则是以深度为准则,先一条路走到底,直到达到目标。这里称之为递归下去。否则既没有达到目标又无路可走了,那么则退回到上一步的状.原创 2021-08-31 16:23:56 · 893 阅读 · 0 评论 -
1190. 反转每对括号间的子串
欢迎访问我的blog http://www.codinglemon.cn/1. 题目描述给出一个字符串 s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中 不应 包含任何括号。示例 1:输入:s = “(abcd)”输出:“dcba”示例 2:输入:s = “(u(love)i)”输出:“iloveu”示例 3:输入:s = “(ed(et(oc))el)”输出:“leetcode”示例.原创 2021-05-26 16:01:58 · 76 阅读 · 0 评论 -
241. 为运算表达式设计优先级
欢迎访问我的blog http://www.codinglemon.cn/1. 题目描述给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。示例 1:输入: “2-1-1”输出: [0, 2]解释:((2-1)-1) = 0(2-(1-1)) = 2示例 2:输入: “23-45”输出: [-34, -14, -10, -10, 10]解释:(2*(3-(45))).原创 2021-05-26 11:02:13 · 135 阅读 · 0 评论 -
455. 分发饼干
欢迎访问我的blog http://www.codinglemon.cn/1. 题目描述假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。示例&nb.原创 2021-05-24 16:09:48 · 64 阅读 · 0 评论 -
剑指 Offer 10- II. 青蛙跳台阶问题
欢迎访问我的blog http://www.codinglemon.cn/1.题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21示例 3:输入:n = 0输出:1提示:0 <= n <= 100来源:力扣(LeetCode)链接:.原创 2021-04-21 15:52:20 · 40 阅读 · 0 评论 -
剑指 Offer 07. 重建二叉树
欢迎访问我的blog http://www.codinglemon.cn/1.题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:限制:0 <= 节点个数 <= 5000来源:力扣(LeetCode)链接:https://leetcode-cn.com/pro.原创 2021-04-19 16:51:15 · 46 阅读 · 0 评论 -
剑指 Offer 09. 用两个栈实现队列
欢迎访问我的blog http://www.codinglemon.cn/1.题目描述用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:[“CQueue”,“appendTail”,“deleteHead”,“deleteHead”][[],[3],[],[]]输出:[null,null,3,-1]示.原创 2021-04-17 22:33:12 · 70 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表
欢迎访问我的blog http://www.codinglemon.cn/1.题目描述输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof著作权归领扣网络所有。商业转载请.原创 2021-04-16 15:49:02 · 55 阅读 · 0 评论 -
剑指 Offer 05. 替换空格
欢迎访问我的blog http://www.codinglemon.cn/1. 题目描述请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.” 限制:0 <= s 的长度 <= 10000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof著作权归领扣网络所有。.原创 2021-04-16 15:23:48 · 51 阅读 · 0 评论 -
剑指 Offer 04. 二维数组中的查找
欢迎访问我的blog http://www.codinglemon.cn/1. 题目描述在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[1.原创 2021-04-16 14:54:55 · 42 阅读 · 0 评论 -
剑指 Offer 03. 数组中重复的数字
欢迎访问我的blog http://www.codinglemon.cn/1.题目描述找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3限制:2 <= n <= 100000来源:力扣(LeetCode)链接:https://lee.原创 2021-04-15 17:19:02 · 33 阅读 · 0 评论 -
剑指 Offer 24. 反转链表
欢迎访问我的blog http://www.codinglemon.cn/1. 题目描述定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 50002. 解题思路该题可利用链表的头插法,将head.next位置元素插入head前,注意在插入之前要保存head.ne.原创 2021-04-15 17:07:08 · 33 阅读 · 0 评论 -
面试题 10.11. 峰与谷
面试题 10.11. 峰与谷1. 题目描述在一个整数数组中,“峰”是大于或等于相邻整数的元素,相应地,“谷”是小于或等于相邻整数的元素。例如,在数组{5, 8, 4, 2, 3, 4, 6}中,{8, 6}是峰, {5, 2}是谷。现在给定一个整数数组,将该数组按峰与谷的交替顺序排序。示例:输入: [5, 3, 1, 2, 3]输出: [5, 1, 3, 2, 3]提示:nums.length <= 100002. 解题代码基于波峰波谷的原理,类似于y=sinx的函数,那么只要原创 2021-03-17 20:33:01 · 131 阅读 · 0 评论 -
面试题 16.02. 单词频率
欢迎访问我的blog http://www.codinglemon.cn/面试题 16.02. 单词频率1. 题目描述设计一个方法,找出任意指定单词在一本书中的出现频率。你的实现应该支持如下操作:WordsFrequency(book)构造函数,参数为字符串数组构成的一本书get(word)查询指定单词在书中出现的频率示例:WordsFrequency wordsFrequency = new WordsFrequency({"i", "have", "an", "apple", ".原创 2021-03-17 19:37:45 · 121 阅读 · 0 评论 -
面试题 01.08. 零矩阵
欢迎访问我的blog http://www.codinglemon.cn/面试题 01.08. 零矩阵1.题目描述编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。示例 1:输入:[[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输入:[[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,0],[0,3,1,.原创 2021-03-17 17:13:14 · 84 阅读 · 0 评论 -
消失的数字
欢迎访问我的blog http://www.codinglemon.cn/面试题 17.04. 消失的数字1. 题目描述数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?示例 1:输入:[3,0,1]输出:2示例 2:输入:[9,6,4,2,3,5,7,0,1]输出:82. 解题代码2.1 类暴力破解我首先想到的方法是新创建一个boolean类型的数组tempArr,且数组长度为传入nums数组的长度再加1(.原创 2021-03-16 20:49:26 · 1157 阅读 · 6 评论 -
交替打印FooBar
欢迎访问我的blog http://www.codinglemon.cn/1115. 交替打印FooBar1. 题目描述我们提供一个类:class FooBar { public void foo() { for (int i = 0; i < n; i++) { print("foo"); } } public void bar() { for (int i = 0; i < n; i++) { print("bar").原创 2021-03-16 20:18:55 · 91 阅读 · 0 评论 -
按序打印
欢迎访问我的blog http://www.codinglemon.cn/好久没有写leetCode的算法题了,先写一个简单的试试水。1114. 按序打印1. 题目描述我们提供了一个类:public class Foo { public void first() { print("first"); } public void second() { print("second"); } public void third() { print("third"); }}三个不同的线.原创 2021-03-16 20:04:33 · 152 阅读 · 0 评论 -
十种常见的排序算法
欢迎访问博主的blog:coding lemon’s blog介绍十种常见排序算法可以分为两大类:比较类排序: 通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。非比较类排序: 不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。1. 冒泡排序 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作.原创 2020-12-21 21:22:17 · 5476 阅读 · 0 评论 -
7. 16. 最接近的三数之和
题目描述先来看题目:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum-closest原创 2020-09-23 11:06:40 · 76 阅读 · 0 评论 -
6. 15. 三数之和
题目描述先来看题目: 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,> b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ]来源:力扣(LeetCode)链接:https://leetcode-cn.com/原创 2020-09-23 09:48:06 · 95 阅读 · 0 评论 -
5. 1. 两数之和
题目描述先来看题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]来源:力扣(LeetCode)链接:https://leetcode-cn.com/prob原创 2020-09-22 10:57:42 · 91 阅读 · 0 评论 -
3. 412. Fizz Buzz
先来看题目:写一个程序,输出从 1 到 n 数字的字符串表示。1. 如果 n 是3的倍数,输出“Fizz”;2. 如果 n 是5的倍数,输出“Buzz”;3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。示例: n = 15时,返回:[“1”,“2”,“Fizz”,“4”,“Buzz”,“Fizz”,“7”,“8”,“Fizz”,“Buzz”,“11”,“Fizz”,“13”, “14”,“FizzBuzz”]来源:力扣(LeetCode)链接:https://leetcod原创 2020-09-15 20:24:17 · 99 阅读 · 0 评论 -
2.剑指 Offer 58 - II. 左旋转字符串
题目描述 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = “abcdefg”, k = 2输出: “cdefgab”示例 2:输入: s = “lrloseumgh”, k = 6输出: “umghlrlose”限制:1 <= k < s.length <= 10000来源:力扣(Leet原创 2020-09-11 11:22:41 · 229 阅读 · 0 评论 -
1. 一维数组的动态和(简单)
题目描述给你一个数组 nums 。数组「动态和」的计算公式为: runningSum[i] = sum(nums[0]…nums[i]) 。请返回 nums 的动态和。示例 1: 输入:nums = [1,2,3,4] 输出:[1,3,6,10] 解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。示例 2: 输入:nums = [1,1,1,1,1] 输出:[1,2,3,4,5] 解释:动态和计算过程为 [1, 1+1, 1+1+1, 1+原创 2020-09-10 09:19:59 · 841 阅读 · 0 评论