leetcode刷题
记录自己在力扣刷题的全部,包括分享
lingle1
&愿一切静好&
展开
-
leetcode -95 - 不同的二叉搜索树 II -java版
文章目录题目代码题目给定一个整数 n,生成所有由 1 … n 为节点所组成的二叉搜索树。示例:输入: 3输出:[[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1,3],[1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索树:1 3 3 2 1\ / / / \ 3 2 1 1 3原创 2020-05-19 08:16:03 · 220 阅读 · 0 评论 -
leetcode -94- 二叉树的中序遍历 -java版
文章目录题目代码题目给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3]12/3输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗?代码/* * @lc app=leetcode.cn id=94 lang=java * * [94] 二叉树的中序遍历 */// @lc code=start/** * Definition for a binary tree node. * public class TreeNode {原创 2020-05-19 08:14:46 · 178 阅读 · 0 评论 -
leetcode -93 -复原IP地址 -java版
文章目录题目代码题目给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 ‘.’ 分隔。示例:输入: “25525511135”输出: [“255.255.11.135”, “255.255.111.35”]代码/* * @lc app=leetcode.cn id=93 lang=java * * [93] 复原IP地址 */// @lc code=startclass So原创 2020-05-19 08:13:36 · 366 阅读 · 0 评论 -
leetcode -92 - 反转链表 II -java版
文章目录题目代码题目反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL代码/* * @lc app=leetcode.cn id=92 lang=java * * [92] 反转链表 II */// @lc code=start/** * Def原创 2020-05-19 08:11:34 · 213 阅读 · 0 评论 -
leetcode -91 -解码方法 -java版
文章目录题目代码题目一条包含字母 A-Z 的消息通过以下方式进行了编码:‘A’ -> 1‘B’ -> 2…‘Z’ -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: “12”输出: 2解释: 它可以解码为 “AB”(1 2)或者 “L”(12)。示例 2:输入: “226”输出: 3解释: 它可以解码为 “BZ” (2 26), “VF” (22 6), 或者 “BBF” (2 2 6) 。代码/* * @lc app=le原创 2020-05-19 08:10:06 · 212 阅读 · 0 评论 -
leetcode -90 - 子集 II -java版
文章目录题目代码题目给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[[2],[1],[1,2,2],[2,2],[1,2],[]]代码/* * @lc app=leetcode.cn id=90 lang=java * * [90] 子集 II */// @lc code=startclass Solution { public List<List&l原创 2020-05-19 08:08:12 · 197 阅读 · 0 评论 -
leetcode -89 -格雷编码 -java版
文章目录题目代码题目格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。即使有多个不同答案,你也只需要返回其中一种。格雷编码序列必须以 0 开头。示例 1:输入: 2输出: [0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的 n,其格雷编码序列并不唯一。例如,[0,2,3,1] 也是一个有效的格雷编码序列。00 - 010 - 211 - 301 - 1示例原创 2020-05-19 08:06:49 · 175 阅读 · 0 评论 -
leetcode -86 - 分隔链表-java版
文章目录题目代码题目给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5代码/* * @lc app=leetcode.cn id=86 lang=java * * [86] 分隔链表 */// @lc code=s原创 2020-05-19 08:05:36 · 186 阅读 · 0 评论 -
leetcode -82 -删除排序链表中的重复元素 II -java版
文章目录题目代码题目给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->1->2->3输出: 2->3代码/* * @lc app=leetcode.cn id=82 lang=java * * [82] 删除排序链表中的重复元素 II */// @lc co原创 2020-05-18 14:22:17 · 205 阅读 · 0 评论 -
leetcode -81 -搜索旋转排序数组 II -java版
文章目录题目代码题目假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。示例 1:输入: nums = [2,5,6,0,0,1,2], target = 0输出: true示例 2:输入: nums = [2,5,6,0,0,1,2], target = 3输出: false进阶:这是 搜索旋转排原创 2020-05-18 14:20:18 · 183 阅读 · 0 评论 -
leetcode -8 -删除排序数组中的重复项 II -java版
文章目录题目代码题目给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,1,2,3,3],函数应返回原创 2020-05-18 14:19:07 · 180 阅读 · 0 评论 -
leetcode -79 -单词搜索 java版
文章目录题目代码题目给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, 返回 true给定 word = “SEE”, 返回 true给定 word = “ABCB”,原创 2020-05-18 14:17:58 · 234 阅读 · 0 评论 -
leetcode -78 -子集 -java版
文章目录题目代码题目给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]代码/* * @lc app=leetcode.cn id=78 lang=java * * [78] 子集 */// @lc code=startclass Solution { public原创 2020-05-18 14:16:51 · 202 阅读 · 0 评论 -
leetcode -77 -组合 - java版
文章目录题目代码题目给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]代码/* * @lc app=leetcode.cn id=77 lang=java * * [77] 组合 */// @lc code=startclass Solution { List<List<Integer>>原创 2020-05-18 14:15:45 · 169 阅读 · 0 评论 -
leetcode -75 -颜色分类 -java版
文章目录题目代码题目给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排序的两趟扫描算法。首先,迭代计算出0、1 和 2 元素的个数,然后按照0、1、2的排序,重写当前数组。你能想出一个仅原创 2020-05-18 14:14:35 · 190 阅读 · 0 评论 -
leetcode -74 -搜索二维矩阵 -java版
文章目录题目代码题目编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [[1, 3, 5, 7],[10, 11, 16, 20],[23, 30, 34, 50]]target = 3输出: true示例 2:输入:matrix = [[1, 3, 5, 7],[10, 11, 16, 20],[23, 30,原创 2020-05-18 14:13:09 · 212 阅读 · 0 评论 -
leetcode -73 -矩阵置零 - java版
文章目录题目代码题目给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 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,0]]进阶:一个直接的解决方案是使用 O(mn) 的额外空间,但原创 2020-05-18 14:12:00 · 175 阅读 · 0 评论 -
leetcode -71 -简化路径 java版
文章目录题目代码题目以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外,规范路径必须是表示绝对路径的最原创 2020-05-18 14:10:34 · 179 阅读 · 0 评论 -
leetcode -64-最小路径和 -java版
文章目录题目代码题目给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。代码/* * @lc app=leetcode.cn id=64 lang=java * * [64] 最小路径和 */// @lc code=startclass Solution {原创 2020-05-18 14:07:40 · 174 阅读 · 0 评论 -
leetcode -63 -不同路径 II -java版
文章目录题目代码题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 1:输入:[[0,0,0],[0,1,0],[0,0,0]]输出: 2解释:3x3 网格的正中间有一个障碍物。原创 2020-05-17 14:42:02 · 229 阅读 · 0 评论 -
leetcode -62 -不同路径 -java版
文章目录题目代码题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。向右 -> 向右 -> 向下向右 -> 向下 -> 向右向下 -&g原创 2020-05-17 14:40:52 · 237 阅读 · 0 评论 -
leetcode -61 -旋转链表 -java版
文章目录题目代码题目给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5->1->2->3->NULL示例 2:输入: 0->1-原创 2020-05-17 14:39:21 · 148 阅读 · 0 评论 -
leetcode -60 -第k个排列 -java版
文章目录题目代码题目给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:“123”“132”“213”“231”“312”“321”给定 n 和 k,返回第 k 个排列。说明:给定 n 的范围是 [1, 9]。给定 k 的范围是[1, n!]。示例 1:输入: n = 3, k = 3输出: “213”示例 2:输入: n = 4, k = 9输出: “2314”代码/* *原创 2020-05-17 14:38:03 · 228 阅读 · 0 评论 -
leetcode -59 -螺旋矩阵 II -java版
文章目录题目代码题目给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ]]代码/* * @lc app=leetcode.cn id=59 lang=java * * [59] 螺旋矩阵 II */// @lc code=startclass Solution { public int[][] generateMatrix(原创 2020-05-17 14:36:47 · 201 阅读 · 0 评论 -
leetcode - 56 -合并区间 -java版
文章目录题目代码题目给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。代码/* * @lc app=leetcode.cn id=56 lang=java * *原创 2020-05-17 14:34:29 · 248 阅读 · 0 评论 -
leetcode -55 -跳跃游戏 - java版
文章目录题目代码题目给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。原创 2020-05-17 14:33:03 · 164 阅读 · 0 评论 -
leetcode -54 -螺旋矩阵 - java版
文章目录题目代码题目给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[[1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,12]]输出: [1,2,3,4,8,12,11,10,9,5,6,7]代码/* * @lc app=leetcode.c原创 2020-05-17 14:21:45 · 217 阅读 · 0 评论 -
leetcode -50 -Pow(x, n) - java版
文章目录题目代码题目实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 < x < 100.0n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。代码/* * @lc a原创 2020-05-17 14:20:27 · 192 阅读 · 0 评论 -
leetcode -49 -字母异位词分组 -java版
文章目录题目代码题目给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]说明:所有输入均为小写字母。不考虑答案输出的顺序。代码/* * @lc app=leetcode.cn id=49 lang=java * * [49] 字母异位词分组 */原创 2020-05-17 14:19:16 · 208 阅读 · 0 评论 -
leetcode -48 -旋转图像 -java版
文章目录题目代码题目给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix =[[1,2,3],[4,5,6],[7,8,9]],原地旋转输入矩阵,使其变为:[[7,4,1],[8,5,2],[9,6,3]]示例 2:给定 matrix =[[ 5, 1, 9,11],[ 2, 4, 8,10],[13, 3, 6,原创 2020-05-16 14:57:55 · 232 阅读 · 0 评论 -
leetcode -47 -全排列 II -java版
文章目录题目代码题目给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]代码/* * @lc app=leetcode.cn id=47 lang=java * * [47] 全排列 II */// @lc code=startclass Solution { private List<List<Integer>> anslist = new Array原创 2020-05-16 14:56:24 · 234 阅读 · 0 评论 -
leetcode -46 -全排列 -java版
文章目录题目代码题目给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]代码/* * @lc app=leetcode.cn id=46 lang=java * * [46] 全排列 */// @lc code=startclass Solution { public List<List<Integer>原创 2020-05-16 14:54:43 · 236 阅读 · 0 评论 -
leetcode -43 -字符串相乘 -java版
文章目录题目代码题目给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示例 2:输入: num1 = “123”, num2 = “456”输出: “56088”说明:num1 和 num2 的长度小于110。num1 和 num2 只包含数字 0-9。num1 和 num2 均不以零开头,除非是数字 0 本身。不能使用任何标准库原创 2020-05-16 14:53:12 · 167 阅读 · 0 评论 -
leetcode -40 -组合总和 II -java版
文章目录题目代码题目给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[[1, 7],[1, 2, 5],[2, 6],[1, 1, 6]]示例 2:输原创 2020-05-16 14:51:30 · 249 阅读 · 0 评论 -
leetcode - 39 -组合总和 - java版
文章目录题目代码题目给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [2,3,6,7], target = 7,所求解集为:[[7],[2,2,3]]示例 2:输入: candidates = [2,3,5],原创 2020-05-16 14:49:26 · 204 阅读 · 0 评论 -
leetcode -36 -有效的数独 -java版
文章目录题目代码题目判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。示例 1:输入:[[“5”,“3”,".",".",“7”,".",".",".","."],[“6”,".",".",“1”,“9”,“5”,".",".","原创 2020-05-16 14:46:43 · 189 阅读 · 0 评论 -
leetcode -34 -在排序数组中查找元素的第一个和最后一个位置 -java版
文章目录题目代码题目给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: [-1,-1]代码/* * @lc app=leetcode原创 2020-05-16 14:45:14 · 163 阅读 · 0 评论 -
leetcode - 33 -搜索旋转排序数组- java版
文章目录题目代码题目假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], target = 0输出: 4示例 2:输入: nums = [4,5,6,7,0,1,2原创 2020-05-16 14:43:23 · 166 阅读 · 0 评论 -
leetcode - 31 - 下一个排列 - java版
文章目录题目代码题目实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1代码/* * @lc app=leetcode.cn id=31 lang=java * * [31] 下一个排列 */// @lc原创 2020-05-16 14:41:37 · 223 阅读 · 0 评论 -
leetcode -29 -两数相除- java版
文章目录题目代码题目给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2示例 1:输入: dividend = 10, divisor = 3输出: 3解释: 10/3 = truncate(3.33333…) =原创 2020-05-15 15:05:32 · 265 阅读 · 1 评论