Leetcode
_卷心菜_
一只努力鸭!
展开
-
Topic39——78. 子集
给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。原创 2022-06-28 15:32:20 · 216 阅读 · 1 评论 -
Topic38——56. 合并区间
leetcode56.合并区间原创 2022-06-26 16:36:40 · 183 阅读 · 0 评论 -
Topic37——64. 最小路径和
给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。原创 2022-06-26 16:31:54 · 198 阅读 · 0 评论 -
Topic36——53. 最大子数组和
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。原创 2022-06-24 19:49:15 · 159 阅读 · 0 评论 -
Topic35——34. 在排序数组中查找元素的第一个和最后一个位置
题目:给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。原创 2022-06-22 19:07:00 · 136 阅读 · 0 评论 -
Topic34——31. 下一个排列
整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。原创 2022-06-20 11:00:18 · 63 阅读 · 0 评论 -
Topic32——21. 合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回原创 2022-06-16 21:10:54 · 129 阅读 · 0 评论 -
Topic31——20. 有效的括号
有效的括号原创 2022-06-16 19:19:59 · 62 阅读 · 0 评论 -
Topic30——19. 删除链表的倒数第 N 个结点
删除链表的倒数第 n 个结点原创 2022-06-14 17:08:04 · 74 阅读 · 0 评论 -
Topic29——176. 第二高的薪水
获取并返回 Employee 表中第二高的薪水原创 2022-06-13 19:52:16 · 76 阅读 · 0 评论 -
Topic28——175. 组合两个表
使用外连接的形式查询原创 2022-06-13 16:54:30 · 98 阅读 · 0 评论 -
Topic27——5. 最长回文子串
最长回文子串。原创 2022-06-13 16:07:14 · 73 阅读 · 0 评论 -
Topic26——11. 盛最多水的容器
11. 盛最多水的容器原创 2022-06-05 10:51:29 · 126 阅读 · 1 评论 -
Topic25——4. 寻找两个正序数组的中位数
题目:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2原创 2022-05-26 19:04:28 · 77 阅读 · 0 评论 -
Topic24——3. 无重复字符的最长子串
题目:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"p原创 2022-05-25 10:47:14 · 80 阅读 · 0 评论 -
Topic23——2. 两数相加
题目:给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9,9,9]原创 2022-05-21 09:50:36 · 82 阅读 · 0 评论 -
Topic22——124. 二叉树中的最大路径和
题目:路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。示例 1:输入:root = [1,2,3]输出:6解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6示例 2:输入:root = [-10,9,20,null,null,15原创 2022-05-16 10:09:34 · 125 阅读 · 0 评论 -
Topic21——337. 打家劫舍 III
题目:小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root 。除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫 ,房屋将自动报警。给定二叉树的 root 。返回在不触动警报的情况下 ,小偷能够盗取的最高金额 。示例 1:输入: root = [3,2,3,null,3,null,1]输出: 7 解释: 小偷一晚能够盗取的最高金额 3 +原创 2022-05-14 10:19:42 · 129 阅读 · 0 评论 -
Topic20——98. 验证二叉搜索树
题目:给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入:root = [2,1,3]输出:true示例 2:输入:root = [5,1,4,null,null,3,6]输出:false解释:根节点的值是 5 ,但是右子节点的值是 4 。提示:树中节点数目范围在[1, 104] 内-23原创 2022-05-07 16:05:57 · 223 阅读 · 0 评论 -
Topic19——617. 合并二叉树
题目:给你两棵二叉树: root1 和 root2 。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。返回合并后的二叉树。注意: 合并过程必须从两个树的根节点开始。示例 1:输入:root1 = [1,3,2,5], root2 = [2,1,3,null,4,null,7]输出:[3,原创 2022-05-07 09:48:57 · 83 阅读 · 0 评论 -
Topic18——226. 翻转二叉树
题目:给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]示例 2:输入:root = [2,1,3]输出:[2,3,1]示例 3:输入:root = []输出:[]提示:树中节点数目范围在 [0, 100] 内-100 <= Node.val <= 100class Solution { public TreeNode invertTree原创 2022-05-06 10:24:46 · 362 阅读 · 0 评论 -
Topic17——104. 二叉树的最大深度
题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。class Solution { public int maxDepth(TreeNode root) { if(root == null) re原创 2022-05-06 09:47:38 · 303 阅读 · 0 评论 -
Topic16——101. 对称二叉树
题目:给你一个二叉树的根节点 root , 检查它是否轴对称。示例 1:输入:root = [1,2,2,3,4,4,3]输出:true示例 2:输入:root = [1,2,2,null,3,null,3]输出:false提示:树中节点数目在范围 [1, 1000] 内-100 <= Node.val <= 100迭代:class Solution { public boolean isSymmetric(TreeNode root) {原创 2022-05-06 09:33:14 · 193 阅读 · 0 评论 -
Topic15——145. 二叉树的后序遍历
给你一棵二叉树的根节点 root ,返回其节点值的后序遍历 。示例 1:输入:root = [1,null,2,3]输出:[3,2,1]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]提示:树中节点的数目在范围 [0, 100] 内-100 <= Node.val <= 100class Solution { public List<Integer> postorderTraversal(TreeN原创 2022-05-04 11:21:59 · 227 阅读 · 0 评论 -
Topic14——144. 二叉树的前序遍历
给你二叉树的根节点 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 <= Node.val <= 100class原创 2022-05-04 10:53:26 · 252 阅读 · 0 评论 -
Topic13——94. 二叉树的中序遍历
题目:给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]提示:树中节点数目在范围 [0, 100] 内-100 <= Node.val <= 100import java.util.*;class Solution { public List<Integer> in原创 2022-05-04 08:56:28 · 110 阅读 · 0 评论 -
Topic12——435. 无重叠区间
题目:给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。示例 1:输入: intervals = [[1,2],[2,3],[3,4],[1,3]]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。示例 2:输入: intervals = [ [1,2], [1,2], [1,2] ]输出: 2解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。示例 3:原创 2022-04-28 11:23:59 · 105 阅读 · 0 评论 -
Topic11——392. 判断子序列
题目:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。进阶:如果有大量输入的 S,称作 S1, S2, … , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?示例 1:输入:s = "abc", t = "ahbgdc"输出:true示例 2:输入:s =原创 2022-04-27 10:18:17 · 94 阅读 · 0 评论 -
Topic10——455. 分发饼干
题目:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。示例 1:输入: g = [1,2,3], s = [1,1]输出: 1解释: 你有三个孩子和两块小饼干,3个孩子的胃口值分别是原创 2022-04-27 08:54:17 · 1668 阅读 · 0 评论 -
Topic9——300. 最长递增子序列
题目:给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。示例 2:输入:nums = [0,1,0,3,2,3]输出:4示例 3:输入:nums = [7,7,7,7,原创 2022-04-24 10:46:43 · 59 阅读 · 0 评论 -
Topic8——62. 不同路径
题目:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1:输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向下 -> 向下2. 向下 -> 向下 -> 向右3. 向下 -&g原创 2022-04-23 11:20:54 · 81 阅读 · 0 评论 -
Topic7——279. 完全平方数
题目:给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。示例 1:输入:n = 12输出:3 解释:12 = 4 + 4 + 4示例 2:输入:n = 13输出:2解释:13 = 4 + 9提示:1 <= n <= 104动态规划思想:class Solution { public int num原创 2022-04-23 10:45:04 · 1212 阅读 · 0 评论 -
Topic6——343. 整数拆分
题目:给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。返回 你可以获得的最大乘积 。示例 1:输入: n = 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: n = 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。提示:2 <= n <= 58方法一:递归class Solution { public int integerBrea原创 2022-04-23 09:07:25 · 182 阅读 · 0 评论 -
Topic5——198. 打家劫舍
题目:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。示例 2:输入:原创 2022-04-22 15:52:35 · 63 阅读 · 0 评论 -
Topic4——39. 组合总和
题目:给你一个 无重复元素的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。示例 1:输入:candidates = [2,3,6,7], target = 7原创 2022-04-16 10:27:32 · 144 阅读 · 0 评论 -
Topic3——17. 电话号码的字母组合
Java中求 m 的 n 次方不能使用 m^n,可使用 Math.pow(m, n) 来求m的n次方,求得结果为浮点类型。原创 2022-04-15 10:23:40 · 172 阅读 · 0 评论 -
Topic2——203.移除链表元素
题目:给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。方法一:不使用虚拟头结点class Solution1 { public ListNode removeElements(ListNode head, int val) { // 情况1:空链表 if(head == null) return null; //原创 2022-01-10 10:18:10 · 143 阅读 · 0 评论 -
Topic1——1.两数之和
**题目:**给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], tar原创 2021-10-15 18:29:49 · 47 阅读 · 0 评论