
LeetCode
xujinshan361
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode0114-二叉树展开为链表
LeetCode0114-二叉树展开为链表题目:给定一个二叉树,原地将它展开为一个单链表。例如,给定二叉树 1 / \ 2 5 / \ \3 4 6将其展开为:1 \ 2 \ 3 \ 4 \ 5 \ 6代码:/** * 0114-二叉树展开为链表 * 给定一个二叉树,原地将它展开为一个单链表。 * <p> * <p&原创 2021-01-07 11:51:59 · 127 阅读 · 0 评论 -
LeetCode0144-二叉树的前序遍历
LeetCode0114-二叉树的前序遍历题目:给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,2,3]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[1,2]示例 5:输入:root = [1,null,2]输出:[1,2]提示:树中节点数目在范围 [0, 100] 内-100 &l原创 2021-01-07 11:11:50 · 200 阅读 · 0 评论 -
LeetCode0103-二叉树的锯齿形层序遍历
LeetCode0103-二叉树的锯齿形层序遍历题目:给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层序遍历如下:[ [3], [20,9], [15,7]]代码:/** * 二叉树的锯齿形层次遍历 * 给定一个二叉树,返回其节点值的锯齿形原创 2021-01-06 19:12:20 · 315 阅读 · 0 评论 -
LeetCode0106-从中序与后序遍历序列构造二叉树
LeetCode0106-从中序与后序遍历序列构造二叉树题目:根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7代码:/** * 0106-从中序与后序遍历序列构造二叉树 * 根据一棵树的中序遍历与后序遍历构造二叉树。 * &l原创 2021-01-06 10:24:56 · 293 阅读 · 0 评论 -
LeetCode0095-不同的二叉搜索树II
LeetCode0095-不同的二叉搜索树题目:给定一个整数 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 \ / / /原创 2021-01-05 22:44:53 · 138 阅读 · 0 评论 -
LeetCode0113-路径总和II
LeetCode0113-路径总和II题目:给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:[原创 2021-01-05 20:29:27 · 116 阅读 · 0 评论 -
LeetCode0102-二叉树的层序遍历
LeetCode0102-二叉树的层序遍历题目:给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层序遍历结果:[ [3], [9,20], [15,7]]代码:/** * 0102-二叉树的层序遍历 * 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到原创 2021-01-05 19:51:42 · 102 阅读 · 0 评论 -
LeetCode0096-不同的二叉搜索树
LeetCode0096-不同的二叉搜索树题目:给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3原创 2021-01-05 19:07:37 · 137 阅读 · 0 评论 -
LeetCode 0098-验证二叉搜索树
LeetCode 0098-验证二叉搜索树题目:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4 / \ 3 6输出: false解释: 输入为: [5,1,4,null,null原创 2020-12-27 11:06:43 · 120 阅读 · 0 评论 -
LeetCode0050-Pow(x,n)
LeetCode0050-Pow(x,n)题目:实现 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]原创 2020-12-24 17:34:12 · 121 阅读 · 1 评论 -
LeetCode0155-最小栈
LeetCode0155-最小栈题目:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例:输入:["MinStack","push","push","push","getMin","pop","top","getMin"][[],[-2],[0],[-3],[],[],[],[]]输出:[原创 2020-12-24 17:19:48 · 110 阅读 · 1 评论 -
LeetCode0141-环形链表
LeetCode0141-环形链表题目:给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?示例 1:输原创 2020-12-22 20:54:23 · 126 阅读 · 0 评论 -
LeetCode0110-平衡二叉树
LeetCode0110-平衡二叉树题目:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。示例 1:输入:root = [3,9,20,null,null,15,7]输出:true示例 2:输入:root = [1,2,2,3,3,null,null,4,4]输出:false示例 3:输入:root = []输出:true提示:树中的节点数在范围 [0, 5000] 内-10原创 2020-12-22 15:06:00 · 166 阅读 · 0 评论 -
LeetCode0108-将有序数组转换为二叉搜索树
LeetCode0108-将有序数组转换为二叉搜索树题目:代码:/** * 0108-将有序数组转换为二叉搜索树 * 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。 * <p> * 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 * <p> * 示例: * <p> * 给定有序数组: [-10,-3,0,5,9], * <p> * 一个可能的答案是:[0,-3,9,-10,n原创 2020-12-22 14:23:06 · 117 阅读 · 0 评论 -
LeetCode0121-买卖股票的最佳时机
LeetCode0121-买卖股票的最佳时机题目:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;原创 2020-12-22 13:42:24 · 142 阅读 · 0 评论 -
LeetCode0112-路径总和
LeetCode0112-路径总和题目:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1返回 true, 因为存在目标和为 22 的根节点原创 2020-12-22 09:14:33 · 98 阅读 · 0 评论 -
LeetCode0119-杨辉三角II
LeetCode0119-杨辉三角II题目:给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]进阶:你可以优化你的算法到 O(k) 空间复杂度吗?代码:import java.util.ArrayList;import java.util.List;/** * 0119-杨辉三角II * 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。 * &l原创 2020-12-20 22:53:57 · 217 阅读 · 0 评论 -
LeetCode0217-存在重复元素
LeetCode0217-存在重复元素题目:给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true代码:import java.util.Arrays;import java.util.HashMap;原创 2020-12-19 14:19:20 · 155 阅读 · 1 评论 -
LeetCode0118-杨辉三角
LeetCode0118-杨辉三角题目:给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]代码:import java.util.ArrayList;import java.util.List;/** * 0118-杨辉三角 * 给定一个非负整数 numRows,原创 2020-12-19 14:02:54 · 208 阅读 · 2 评论 -
LeetCode0048-旋转图像
LeetCode0048-旋转图像题目:给定一个 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]原创 2020-12-19 09:36:26 · 149 阅读 · 1 评论 -
LeetCode0136-只出现一次的数字
LeetCode0136-只出现一次的数字题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4分析:如果没有时间复杂度和空间复杂度的限制,有很多解法:使用集合存储数字。遍历数组中的每个数字,如果集合中没有该数字,则将该数字加入集合,如果集合中已经有该数字,则将该原创 2020-12-18 15:34:54 · 157 阅读 · 0 评论 -
LeetCode0389-找不同
LeetCode0389-找不同题目:给定两个字符串 s 和 t,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。示例 1:输入:s = "abcd", t = "abcde"输出:"e"解释:'e' 是那个被添加的字母。示例 2:输入:s = "", t = "y"输出:"y"示例 3:输入:s = "a", t = "aa"输出:"a"示例 4:输入:s = "ae", t = "aea"输出:"a原创 2020-12-18 15:02:08 · 235 阅读 · 0 评论 -
LeetCode0107-二叉树的层次遍历II
LeetCode0107-二叉树的层次遍历II題目:给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]]代码:import java.util.*;/** * 0107-二叉树的层次遍历II原创 2020-12-18 11:11:30 · 105 阅读 · 0 评论 -
LeetCode0104-二叉树的最大深度
LeetCode0104-二叉树的最大深度题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。代码:/** * 0104-二叉树的最大深度 * 给定一个二叉树,找出其最大深度。 * <p> * 二叉树的深度为根节点到最远原创 2020-12-17 22:06:54 · 110 阅读 · 0 评论 -
LeetCode0101-对称二叉树
LeetCode0101-对称二叉树题目:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3进阶:你可以运用递归和迭代两种方法解决这个问题吗?代码:/** * 0101-对称二叉树 * <p>原创 2020-12-17 21:40:04 · 116 阅读 · 0 评论 -
LeetCode0067-二进制求和
LeetCode0067-二进制求和题目:给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 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-12-17 10:44:07 · 131 阅读 · 0 评论 -
LeetCode0058-最后一个单词的长度
LeetCode0058-最后一个单词的长度题目:给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0 。说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。示例:输入: "Hello World"输出: 5代码:/** * 0058-最后一个单词的长度 * 给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回其最后一个单词的长度。如果字原创 2020-12-17 10:11:25 · 158 阅读 · 0 评论 -
LeetCode0100-相同的树
LeetCode0100-相同的树题目给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1 / \ 2原创 2020-12-17 09:47:35 · 98 阅读 · 0 评论 -
LeetCode0088-合并两个有序数组
LeetCode0088-合并两个有序数组题目:给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3输出:[1,2原创 2020-12-17 09:14:30 · 114 阅读 · 0 评论 -
LeetCode0070-爬楼梯
LeetCode0070-爬楼梯题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶代码:/** * 0070-爬原创 2020-12-16 11:15:01 · 175 阅读 · 0 评论 -
LeetCode0083-删除排序链表中的重复元素
LeetCode0083-删除排序链表中的重复元素题目给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3代码:/** * 0083-删除排序链表中的重复元素 * 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 * <p> * 示例 1: * <p> * 输原创 2020-12-16 10:31:38 · 236 阅读 · 0 评论 -
LeetCode0704-二分查找
LeetCode0704-二分查找题目:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返原创 2020-12-14 23:33:27 · 112 阅读 · 0 评论 -
LeetCode0752-打开转盘锁
LeetCode0752-打开转盘锁题目:你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ 。每个拨轮可以自由旋转:例如把 ‘9’ 变为 ‘0’,‘0’ 变为 ‘9’ 。每次旋转都只能旋转一个拨轮的一位数字。锁的初始数字为 ‘0000’ ,一个代表四个拨轮的数字的字符串。列表 deadends 包含了一组死亡数字,一旦拨轮的数字和列表里的任何一个元素相同,这个锁将会被永久锁定,无法再被旋转。原创 2020-12-14 15:47:48 · 313 阅读 · 0 评论 -
LeetCode0111-二叉树的最小深度
LeetCode0111-二叉树的最小深度题目给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例 1:输入:root = [3,9,20,null,null,15,7]输出:2示例 2:输入:root = [2,null,3,null,4,null,5,null,6]输出:5提示:树中节点数的范围在 [0, 105] 内-1000 <= Node.val <= 1000代码pack原创 2020-12-14 13:06:14 · 116 阅读 · 0 评论 -
LeetCode0046-全排列
LeetCode0046-全排列题目:给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]分析:原创 2020-12-12 17:46:41 · 150 阅读 · 1 评论 -
LeetCode0099-恢复二叉搜索树
LeetCode0099-恢复二叉搜索树题目:给你二叉搜索树的根节点 root ,该树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。进阶:使用 O(n) 空间复杂度的解法很容易实现。你能想出一个只使用常数空间的解决方案吗?示例 1:输入:root = [1,3,null,null,2]输出:[3,1,null,null,2]解释:3 不能是 1 左孩子,因为 3 > 1 。交换 1 和 3 使二叉搜索树有效。示例 2:输入:root = [3,1,4,null原创 2020-12-12 16:47:09 · 222 阅读 · 0 评论 -
LeetCode0066-加一
LeetCode0066-加一题目:给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。示例 2:输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 4321。示例 3:输入:digits = [0]输出:原创 2020-12-08 10:08:54 · 296 阅读 · 0 评论 -
LeetCode0105-从前序与中序遍历序列构造二叉树
LeetCode0105-从前序与中序遍历序列构造二叉树题目:根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7分析:二叉树前序遍历的顺序:先遍历根节点随后递归遍历左子树随后递归遍历右子树二叉树中序遍历的顺序:先递归遍历左子树随后遍历原创 2020-11-19 11:04:30 · 212 阅读 · 0 评论 -
LeetCode0124-二叉树中的最大路径和
LeetCode0124-二叉树中的最大路径和题目给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点示例 1:输入:[1,2,3] 1 / \ 2 3输出:6示例 2:输入:[-10,9,20,null,null,15,7]-10 / \9 20/ \15 7输出:42代码:/** * 0124-二叉树中的最大路径原创 2020-11-18 09:36:50 · 143 阅读 · 0 评论 -
LeetCode0094-二叉树的中序遍历
LeetCode0094-二叉树的中序遍历给定一个二叉树的根节点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 <= Node原创 2020-11-09 21:28:20 · 157 阅读 · 0 评论