- 博客(100)
- 收藏
- 关注
原创 解题思路-leetcode第81题:搜索旋转排序数组Ⅱ
解题思路-leetcode第81题:搜索旋转排序数组Ⅱ题目描述:**已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转 ,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,4,4,5,6,6,7] 在下标 5 处
2021-06-29 19:38:55
253
原创 解题思路-leetcode79题:单词搜索
解题思路-leetcode79题:单词搜索题目描述:给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例 1:输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word
2021-06-25 21:02:40
356
1
原创 解题思路-leetcode90题:子集Ⅱ
解题思路-leetcode90题:子集Ⅱ给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。示例 1:输入:nums = [1,2,2]输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]示例 2:输入:nums = [0]输出:[[],[0]]解题思路:本题采用回溯法解题,通过构造回溯函数遍历每一种可能性,在回溯搜索之前先对nums进行排序,用以去掉重复情况,之
2021-06-22 20:28:22
231
原创 解题思路-leetcode102题:二叉树的层序遍历
解题思路-leetcode102题:二叉树的层序遍历题目描述:给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其层序遍历结果:[[3],[9,20],[15,7]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal
2021-03-23 19:40:06
200
原创 解题思路-leetcode130题:被围绕的区域
解题思路-leetcode130题:被围绕的区域题目描述:给你一个 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”,
2021-03-19 21:28:29
1125
原创 解题思路-leetcode81题: 搜索旋转排序数组 II
解题思路-leetcode81题: 搜索旋转排序数组 II题目描述:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [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 =
2021-03-16 20:51:22
143
原创 解题思路-leetcode82题: 删除排序链表中的重复元素 II
解题思路-leetcode82题: 删除排序链表中的重复元素 II题目描述:给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->1->2->3输出: 2->3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove
2021-03-12 21:53:06
139
原创 解题思路-leetcode94题:二叉树的中序遍历
解题思路-leetcode94题:二叉树的中序遍历题目描述:给定一个二叉树的根节点 root ,返回它的 中序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[2,1]示例 5:输入:root = [1,null,2]输出:[1,2]提示:树中节点数目在范围 [0, 100] 内-100 <=
2021-03-05 20:22:32
257
原创 解题思路-leetcode86题:分隔链表
解题思路-leetcode第三题:无重复字符的最长子串题目描述:给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你应当 保留 两个分区中每个节点的初始相对位置。示例 1:输入:head = [1,4,3,2,5,2], x = 3输出:[1,2,2,4,3,5]示例 2:输入:head = [2,1], x = 2输出:[1,2]提示:链表中节点的数目在范围 [0, 200] 内-100 <
2021-02-26 21:49:42
167
1
原创 解题思路-leetcode面试题 16.06. 最小差
解题思路-leetcode面试题 16.06. 最小差题目描述:给定两个整数数组a和b,计算具有最小差绝对值的一对数值(每个数组中取一个值),并返回该对数值的差示例:输入:{1, 3, 15, 11, 2}, {23, 127, 235, 19, 8}输出:3,即数值对(11, 8)提示:1 <= a.length, b.length <= 100000-2147483648 <= a[i], b[i] <= 2147483647正确结果在区间 [0, 214748
2021-02-23 21:33:12
251
原创 解题思路-leetcode第96题:不同的二叉搜索树
解题思路-leetcode第96题:不同的二叉搜索树题目描述:给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树:1 3 3 2 1\ / / / \ 3 2 1 1 3 2/ / \ 2 1
2021-01-29 22:27:11
96
原创 解题思路-leetcode第98题:验证二叉搜索树
解题思路-leetcode第98题:验证二叉搜索树题目描述:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入:2/ 1 3输出: true示例 2:输入:5/ 1 4/ 3 6输出: false解释: 输入为: [5,1,4,null,null,3,6]。根节点的值为 5 ,但是其右子节点值
2021-01-26 19:25:37
116
原创 解题思路-leetcode第1685题:有序数组中差绝对值之和
解题思路-leetcode第1685题:有序数组中差绝对值之和题目描述:给你一个 非递减 有序整数数组 nums 。请你建立并返回一个整数数组 result,它跟 nums 长度相同,且result[i] 等于 nums[i] 与数组中所有其他元素差的绝对值之和。换句话说, result[i] 等于 sum(|nums[i]-nums[j]|) ,其中 0 <= j < nums.length 且 j != i (下标从 0 开始)。示例 1:输入:nums = [2,3,5]输出
2021-01-22 21:09:33
218
原创 解题思路-leetcode第289题:生命游戏
解题思路-leetcode第289题:生命游戏题目描述:根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;如果活细胞周围八个位置有两个或三个活细胞,则该
2021-01-19 21:00:21
297
原创 解题思路-leetcode第229题:求众数Ⅱ
解题思路-leetcode第229题:求众数Ⅱ给定一个大小为 n 的整数数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1)的算法解决此问题。示例 1:输入:[3,2,3]输出:[3]示例 2:输入:nums = [1]输出:[1]示例 3:输入:[1,1,1,3,3,2,2,2]输出:[1,2]提示:1 <= nums.length <= 5 * 104-109 <= nums[i] <= 1
2020-11-20 19:21:37
218
原创 解题思路-leetcode第220题:存在重复元素Ⅲ
解题思路-leetcode第220题:存在重复元素Ⅲ题目描述:在整数数组 nums 中,是否存在两个下标 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值小于等于 t ,且满足 i 和 j 的差的绝对值也小于等于 ķ 。如果存在则返回 true,不存在返回 false。示例 1:输入: nums = [1,2,3,1], k = 3, t = 0输出: true示例 2:输入: nums = [1,0,1,1], k = 1, t = 2输出: true示例 3:
2020-11-17 20:23:00
431
原创 解题思路-leetcode第232题:2的幂
解题思路-leetcode第232题:2的幂题目描述:给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 20 = 1示例 2:输入: 16输出: true解释: 24 = 16示例 3:输入: 218输出: false解题思路:首先排除特殊情况,当n等于0时,返回false。否则,然后利用while循环每一次将n除2,若除2后得到除1以外的奇数则返回false,若最终得到1,则返回true。代码如下:class Solutio
2020-11-13 20:40:12
138
原创 解题思路-leetcode第219题:存在重复元素Ⅱ
解题思路-leetcode第219题:存在重复元素Ⅱ题目描述:给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。示例 1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: nums = [1,0,1,1], k = 1输出: true示例 3:输入: nums = [1,2,3,1,2,3], k = 2输出: false解题思
2020-11-10 19:47:40
125
原创 解题思路-leetcode第1625题:执行操作后字典序最小的字符串
解题思路-leetcode第1625题:执行操作后字典序最小的字符串题目描述:给你一个字符串 s 以及两个整数 a 和 b 。其中,字符串 s 的长度为偶数,且仅由数字 0 到 9 组成。你可以在 s 上按任意顺序多次执行下面两个操作之一:累加:将 a 加到 s 中所有下标为奇数的元素上(下标从 0 开始)。数字一旦超过 9 就会变成 0,如此循环往复。例如,s = “3456” 且 a = 5,则执行此操作后 s 变成 “3951”。轮转:将 s 向右轮转 b 位。例如,s = “3456”
2020-11-06 20:43:48
708
原创 解题思路-leetcode第1381题:设计一个支持增量操作的栈
解题思路-leetcode第1381题:设计一个支持增量操作的栈题目描述:请你设计一个支持下述操作的栈。实现自定义栈类 CustomStack :CustomStack(int maxSize):用 maxSize 初始化对象,maxSize 是栈中最多能容纳的元素数量,栈在增长到 maxSize 之后则不支持 push 操作。void push(int x):如果栈还未增长到 maxSize ,就将 x 添加到栈顶。int pop():弹出栈顶元素,并返回栈顶的值,或栈为空时返回 -1 。v
2020-11-03 20:42:25
128
原创 解题思路-leetcode第八十九题:格雷编码
解题思路-leetcode第八十九题:格雷编码题目描述:格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。即使有多个不同答案,你也只需要返回其中一种。格雷编码序列必须以 0 开头。示例 1:输入: 2输出: [0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的 n,其格雷编码序列并不唯一。例如,[0,2,3,1] 也是一个有效的格雷编码序列。00 - 010 -
2020-10-30 20:51:34
204
原创 解题思路-leetcode第八十题:删除排序数组中的重复项 II
解题思路-leetcode第八十题:删除排序数组中的重复项 II题目描述:给定一个增序排列数组 nums ,你需要在 原地 删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以“引用”方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就
2020-10-28 21:35:40
90
原创 解题思路-leetcode第七十八题:子集
解题思路-leetcode第七十八题:子集题目描述:给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]解题思路本题与77题十分相似,只是将77的搜索固定长度改为了不定长度,因此本题采用与77题同样的解法,主体采用77题的思路,只在最外层添加循环改变每一次搜索的长度,每一次遍历都将不同的长
2020-10-20 19:59:47
127
原创 解题思路-leetcode第七十七题:组合
解题思路-leetcode第七十七题:组合题目描述:给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]解题思路:
2020-10-16 20:23:16
156
原创 解题思路-leetcode第七十六题:最小覆盖子串
解题思路-leetcode第七十六题:最小覆盖子串题目描述:给你一个字符串 S、一个字符串 T 。请你设计一种算法,可以在 O(n) 的时间复杂度内,从字符串 S 里面找出:包含 T 所有字符的最小子串。示例:输入:S = “ADOBECODEBANC”, T = “ABC”输出:“BANC”提示:如果 S 中不存这样的子串,则返回空字符串 “”。如果 S 中存在这样的子串,我们保证它是唯一的答案。解题思路:本题采用滑动窗口的方法解题,当窗口内元素不包含目标字符串全部元素时,则窗口向右加
2020-10-09 20:08:55
213
原创 解题思路-leetcode第七十五题:颜色分类
解题思路-leetcode第七十五题:颜色分类给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排序的两趟扫描算法。首先,迭代计算出0、1 和 2 元素的个数,然后按照0、1、2的排序,重写当
2020-10-06 18:18:18
238
原创 解题思路-leetcode第七十四题:搜索二维矩阵
编写一个高效的算法来判断 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, 34, 50]]t
2020-09-30 20:15:06
128
原创 解题思路-leetcode第七十三题:矩阵置零
解题思路-leetcode第七十三题:矩阵置零题目描述:给定一个 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]]进阶:一个直接的解决方案
2020-09-25 19:59:41
236
原创 解题思路-leetcode第七十二题:编辑距离
解题思路-leetcode第七十二题:编辑距离题目描述:给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入:word1 = “horse”, word2 = “ros”输出:3解释:horse -> rorse (将 ‘h’ 替换为 ‘r’)rorse -> rose (删除 ‘r’)rose -> ros (删除 ‘e’
2020-09-22 18:58:39
147
原创 解题思路-leetcode第七十一题:简化路径
解题思路-leetcode第七十一题:简化路径题目描述:以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。
2020-09-18 20:09:18
163
原创 解题思路-leetcode第七十题:爬楼梯
解题思路-leetcode第七十题:爬楼梯题目描述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶解题思路:本题采用动态规划的解法,将大问题化解为小问题
2020-09-15 20:06:58
174
原创 解题思路-leetcode第六十九题:X的平方根
解题思路-leetcode第六十九题:X的平方根题目描述:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。解题思路:本题利用数学函数将x的平分根转化为exp{1/2*lnx},因此直接调用math包的数学函数求解,但是这种方法存在一种问题,即
2020-09-14 20:45:12
211
原创 解题思路-leetcode第六十八题:文本左右对齐
解题思路-leetcode第六十七题:二进制求和题目描述:给定一个单词数组和一个长度 maxWidth,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。你应该使用“贪心算法”来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 ’ ’ 填充,使得每行恰好有 maxWidth 个字符。要求尽可能均匀分配单词间的空格数量。如果某一行单词间的空格不能均匀分配,则左侧放置的空格数要多于右侧的空格数。文本的最后一行应为左对齐,且单词之间不插入额外的空格。
2020-09-08 19:46:57
616
原创 解题思路-leetcode第六十七题:二进制求和
解题思路-leetcode第六十七题:二进制求和题目描述:给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “1”输出: “100”示例 2:输入: a = “1010”, b = “1011”输出: “10101”提示:每个字符串仅由字符 ‘0’ 或 ‘1’ 组成。1 <= a.length, b.length <= 10^4字符串如果不是 “0” ,就都不含前导零。解题思
2020-09-04 20:38:48
117
原创 解题思路-leetcode第六十六题:加一
解题思路-leetcode第六十六题:加一题目描述:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。解题思路:本题采用先将列表元素组合成数字,然后加一,然后再分割成列表元
2020-08-28 20:37:21
152
原创 解题思路-leetcode第六十五题:有效数字
解题思路-leetcode第六十五题:有效数字题目描述:验证给定的字符串是否可以解释为十进制数字。例如:“0” => true" 0.1 " => true“abc” => false“1 a” => false“2e10” => true" -90e3 " => true" 1e" => false“e3” => false" 6e-1" => true" 99e2.5 " => false“53.5e93” =&
2020-08-25 20:09:02
227
原创 解题思路-leetcode第六十四题:最小路径和
解题思路-leetcode第六十三题:不同路径Ⅱ题目描述:给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。解题思路:本题适用于动态规划方法,将大问题化解为小问题,从某一点到终点的解就等于其左边元素和上方元素的解之中的最小值加上本身的值,我们通过在原矩阵中修改,将每一个位置
2020-08-21 21:09:17
247
原创 解题思路-leetcode第六十三题:不同路径Ⅱ
解题思路-leetcode第六十三题:不同路径Ⅱ题目描述:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 1:输入:[[0,0,0],[0,1,0],[0,0,0]]输出: 2解
2020-08-18 21:24:26
234
原创 解题思路-leetcode第六十二题:不同路径
解题思路-leetcode第六十二题:不同路径题目描述:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。向右 -> 向右 -> 向下向右 -&
2020-08-14 21:41:50
284
原创 解题思路-leetcode第六十一题:旋转链表
解题思路-leetcode第六十一题:旋转链表给定一个链表,旋转链表,将链表每个节点向右移动 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:
2020-08-11 20:34:31
155
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人