刷题
文章平均质量分 57
捕若审若判若
爱若信若盼若
展开
-
LeetCode 684. 冗余连接 Redundant Connection(Java)
0684. 冗余连接 Redundant Connection(Medium)##Union Find##并查集并查集可以维护无向图的联通分量对边数组中每条边进行遍历每条边的两个端点,查找其所属的联通分量若两端点所属联通分量不相同,代表两端点不连通,联通两端点后也不会形成环若两端点所属的联通分量相同,两端点联通,联通两端点后会行程环,该边就是形成环需要删去的最后的边若所有边都不成环,则返回空数组时间复杂度:O(n)O(n)O(n)将并查集操作复杂度视作O(1)O(1)O(1)原创 2021-05-15 17:27:43 · 221 阅读 · 0 评论 -
LeetCode1856.子数组最小乘积的最大值 Maximum Subarray Min-Product(Java)
LeetCode1856.子数组最小乘积的最大值 Maximum Subarray Min-Product(Java)##Binary Search##, ##Dynamic Programming##, ##Sort##, ##Union Find##, ##Queue##, ##Dequeue##最小乘积定义为这个数组中最小值乘以数组的和,题目求数组中非空子数组的最小乘积则该最小乘积由非空子数组中最小值、和子数组的和决定单调栈+前缀和参考LeetCode84遍历数组中的所有元素,假定当前元素原创 2021-05-10 15:25:30 · 231 阅读 · 0 评论 -
LeetCode 1854.人口最多的年份 Maximum Population Year(Java)
##1854.人口最多的年份Maximum Population Year(Easy)##Array##暴力枚举枚举每一年year包含的人口,过程为遍历整个数组logs,对某个人log,若log[0] <= year && log[1] - 1 >= year则判断这个人属于该年包含的人口时间复杂度:O(n∗m)O(n * m)O(n∗m),n为年龄跨度,m为人口总数差分法考虑一般情况,每年都有人出生的去世diff[i] = m - n表示第i年有m个人出生,n个人原创 2021-05-09 22:14:35 · 214 阅读 · 0 评论 -
LeetCode 1723. 完成所有工作的最短时间 Find Minimum Time to Finish All Jobs(Java)
1723. 完成所有工作的最短时间 Find Minimum Time to Finish All Jobs(Hard)##DFS##采用回溯、剪枝每项工作都有可能分给不同的工人,因此采用回溯法枚举所有可能的情况,并更新可能的最短的最大工作时间ans,对于不可能比ans小的最大工作时间的情况,直接剪枝时间复杂度:O(mn)O(m^n)O(mn),m为工人数,n为任务数class Solution { int ans = Integer.MAX_VALUE; public int原创 2021-05-08 15:18:43 · 203 阅读 · 0 评论 -
LeetCode 227. 基本计算器 (Java)
0227. 基本计算器 Basic Calculator II(Medium)##Stack##, ##String##在没有括号的情况下,算术表达式情况较为简单乘除优先于加减运算,因此考虑先进行乘除运算,运算结果放回原表达式中,原表达式变为一系列正整数加减后的值遍历整个字符串s,用变量preSign记录每个数字前的操作符,当遍历完一个数字后,根据preSign决定计算计算方法加号:直接将该数加入栈中减号:取该数相反数加入栈中乘除号:取栈顶元素与当前数字进行相应操作后放入栈中初始化时,将原创 2021-05-05 11:38:19 · 239 阅读 · 0 评论 -
LeetCode 128. 最长连续序列 (Java)
LeetCode 128. 最长连续序列 (Java)##Array##, ##Union Find##并查集O(n)O(n)O(n)哈希表存储每个值-下标作为对应的键值对将连续的值(a = b + 1)通过并查集维护成为联通分量最后找出最大的联通分量,输出其大小class Solution { class UnionFind { int n; int[] p; int[] size; public void init(i原创 2021-04-10 14:49:26 · 91 阅读 · 0 评论 -
并查集(Union Find)
并查集(Union Find)知乎上这篇文章写得挺好的,并查集详细介绍朴素并查集模板public class UnionFind { // int INF = 10000010; int[] p = new int[INF]; int n; public void init(int n) { // n为可用结点总数, this.n = n; for (int i = 0; i < n; i ++原创 2021-04-10 14:15:09 · 135 阅读 · 0 评论 -
LeetCode130. 被围绕的区域 Surrounded Regions(Java)
LeetCode 130. 被围绕的区域 Surrounded Regions(Java)##DFS##, ##BFS##, ##Union Find##泛洪算法O(n2)O(n^2)O(n2)采用逆向思维,将所有边界上的O采用Flood Fill算法标记其连通域,并做标记#,全图遍历完后,对于board中所有字符不为#的字符,如果为O,即代表不与边界的O(遍历后改为#)相连,因此被X包围,改为X采用int[] dx = {-1, 0, 1, 0}, dy = {0, 1, 0, -1}标记即将要原创 2021-04-10 14:03:39 · 96 阅读 · 0 评论 -
Leetcode72. 编辑距离Edit Distance(Java)
Leetcode72. 编辑距离Edit Distance(Java)动态规划对字符操作的顺序并不能影响结果因此,将字符串操作顺序规定为从左到右操作f(i,j)f(i,j)f(i,j)表示将长度为i的字符串A修改成为长度为j的字符串B的操作所需的最小操作数则只可能分以下6种情况字符串A末尾删除一个字符后与字符串B相同f(i,j)=f(i−1,j)+1f(i,j) = f(i - 1, j) + 1f(i,j)=f(i−1,j)+1表示字符串A的前i-1项与字符串的前j项相同,只需进行一次原创 2021-03-30 14:34:02 · 124 阅读 · 0 评论 -
Leetcode1262.可被3整除的最大和 Greatest Sum Divisible by Three(Medium)
Leetcode1262.可被3整除的最大和 Greatest Sum Divisible by Three(Medium)0-1背包问题对于每个物品(数),都有放入背包和不放入背包两种选择。f(i,j)=sumf(i,j) = sumf(i,j)=sum表示前iii个数字,通过某种最优选择方式选出某个子集,该子集和为sumsumsum,sumsumsum对333取模为jjj,且sumsumsum是所有子集中,子集和对333取模为jjj的最大和设mod=nums(i)%3mod = nums(i)原创 2021-03-30 11:33:51 · 131 阅读 · 0 评论 -
Leetcode611. 有效三角形的个数 Valid Triangle Number(Medium)
611. Valid Triangle Number(Medium)##Array##, ##Two Pointers##暴力法O(n3)O(n^3)O(n3)分别枚举三条边,记录可行的方案,该解法会超时优化暴力法O(n3×logn)O(n^3\times logn)O(n3×logn)首先对数组进行排序,每条边都从小到大枚举,枚举第三条边时,遇到第一条边+第二条边≤第三条边第一条边 + 第二条边 \le 第三条边第一条边+第二条边≤第三条边时,不必继续枚举第三条边,因为第三条边继续向右枚举时,仍原创 2021-03-30 09:21:37 · 178 阅读 · 0 评论 -
Leetcode 879. Profitable Schemes(Hard)
879. Profitable Schemes(Hard)##Dynamic Programming##本题是01背包问题对于每个工作,都可以选择做或者不做,在这里,每份工作相当于每个物品,都可以取或者不取,而员工数量相当于体积限制,而且还需要满足额外条件最小利益DP1f[i][j][k]表示考虑前i项工作,只有j名员工,要达到利益为k的方案数对于第i项工作,可以选择选或不选选,则f[i][j][k] = f[i - 1][j - group[i]][k -profit[i]],对于之前的i原创 2021-03-11 11:36:25 · 97 阅读 · 0 评论 -
Leetcode815.公交线路 Bus Routes(Java)
815. Bus Routes(Hard)##BFS##广度优先搜索该题应该为图论题,边有权值的情况下寻找最短路径,采用多源BFS解决假设routes = [[a1, a2, ... an],[b1,b2, ... bn]],其中原创 2021-03-08 15:35:16 · 523 阅读 · 0 评论 -
Leetcode236.二叉树的最近公共祖先 Lowest Common Ancestor of a Binary Tree(Java)
Leetcode236.二叉树的最近公共祖先 Lowest Common Ancestor of a Binary Tree(Java)##Tree##二叉树的最近公共祖先后续遍历就是天然的回溯法采用后续遍历所有的结点,主要采用回溯的思想递归函数的作用判断是否能找到结点p或q,但由于还要寻找最近的公共祖先,因此需要返回TreeNode递归出口设定为找到了p或q,或者已经遍历完一条路径时,返回此时遍历的结点root左子树不空时,递归遍历左子树,返回结果为left,右子树不空时,递归遍历右子树,原创 2020-12-30 14:31:38 · 81 阅读 · 0 评论 -
Leetcode 501.二叉搜索树中的众数 Find Mode in Binary Search Tree(Java)
Leetcode 501.二叉搜索树中的众数 Find Mode in Binary Search Tree(Java)##Tree##二叉搜索树中的众数二叉搜索树的中序遍历为有序序列,因此本题转换为在有序序列中寻找众数max记录已经遍历过的数中,出现的最大频次count记录当前遍历的数出现的频次TreeNode pre记录上一个遍历的结点,如果题目没有Integer.MAX_VALUE,也可以将pre声明为int,并初始化为Integer.MAX_VALUELinkedList<In原创 2020-12-30 08:55:14 · 94 阅读 · 0 评论 -
Leetcode530.二叉搜索树的最小绝对差 Minimum Absolute Difference in BST(Java)
Leetcode530.二叉搜索树的最小绝对差 Minimum Absolute Difference in BST(Java)##Tree##二叉搜索树的最小绝对差在二叉搜索树的任意结点之间找到最小的绝对差,二叉搜索树的中序遍历是有序序列,相当于在有序序列中找最小绝对差最小绝对差必然出现在有序序列的相邻结点上因此中序遍历枚举遍历相邻两结点的差值,记录最小差值时间复杂度: O(n)class Solution { int min = Integer.MAX_VALUE; int原创 2020-12-30 08:10:52 · 126 阅读 · 0 评论 -
Leetcode98.验证二叉搜索树 Validate Binary Search Tree(Java)
Leetcode98.验证二叉搜索树 Validate Binary Search Tree(Java)##Tree##, ##Depth-first Search##, ##Recursion##验证二叉搜索树:给定一个二叉搜索树,判断其是否是一个有效的二叉搜索树二叉搜索树的定义(特征)节点的左子树只包含小于当前节点的数节点的右子树只包含大于当前节点的数所有左子树和右子树自身必须也是二叉搜索树二叉搜索树中不能存在值相同的结点方法一二叉搜索树的中序遍历是有序序列ArrayList记原创 2020-12-29 13:02:54 · 135 阅读 · 0 评论 -
Leetcode124.二叉树中的最大路径和 Binary Tree Maximum Path Sum(Java)
Leetcode124.二叉树中的最大路径和 Binary Tree Maximum Path Sum(Java)##Tree##, ##Depth-first Search##, ##Recursion##二叉树中的最大路径和本题采用DFS后序遍历方法递归遍历整棵树,递归时维护每个结点开始向下延伸的最大路径和对于每个结点,都先递归计算完左右子树,将得到的左右子树的向下延伸的最大路径和与该结点值相加,就能够得到经过该结点的最大路径和维护(返回)这个结点向下延伸的最大路径和,从左右子树路径中选择原创 2020-12-29 09:10:15 · 74 阅读 · 0 评论 -
Leetcode 700.二叉搜索树中的搜索 Search in a Binary Search Tree(Java)
Leetcode 700.二叉搜索树中的搜索 Search in a Binary Search Tree(Java)##Tree##二叉搜索树中的搜索二叉搜索树是一个有序树若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉搜索树可以采用递归法和迭代法递归法树的根节点为空时root == null ,返回null树的根节点的值等于目标值root.val == val,返回该根节原创 2020-12-28 15:04:12 · 131 阅读 · 0 评论 -
Leetcode 654.最大二叉树 Maximum Binary Tree(Java)
Leetcode 654.最大二叉树 Maximum Binary Tree(Java)##Tree##最大二叉树普通递归与普通的构造树方法类似对于一段序列[l,l+1,...r-1,r],找到序列中的最大元素max和其位置pos,则该序列生成树的根节点的值应该为max该序列生成树的根节点的左子树应该在子序列[l,l+1,...pos-1,pos]中生成,因此递归处理该子序列,将根节点的左子树指向递归生成的树节点同理,对于右子树,该序列生成树的根节点的右子树应该在子序列[pos+1,pos+原创 2020-12-28 15:02:16 · 155 阅读 · 0 评论 -
Leetcode 617.合并两个二叉树 Merge Two Binary Trees(Java)
Leetcode 617.合并两个二叉树 Merge Two Binary Trees(Java)##Tree##合并两个二叉树采用递归做法,前中后序都可以解决,这里采用前序遍历从根节点开始遍历,t1,t2都为空,则返回空t1为空,t2不空,返回t2t1不空,t2为空,返回t1t1,t2均不为空,返回一个值为t1.val + t2.val的结点res,递归两棵树的左右子树,res的左儿子指向递归处理两棵树左子树的结果,res的右儿子指向递归处理两棵树右子树的结果,返回res**时间复杂原创 2020-12-28 15:00:20 · 150 阅读 · 0 评论 -
Leetcode106. 从中序与后序遍历序列构造二叉树Construct Binary Tree from Inorder and Postorder Traversal(Java)
Leetcode106. 从中序与后序遍历序列构造二叉树Construct Binary Tree from Inorder and Postorder Traversal(Java)##Array##, ##Tree##, ##Depth-first Tree##从中序与后序遍历序列构造二叉树与Leetcode.105 从前序与中序遍历序列构造二叉树类似,采用递归做法,创建根节点,递归创建左右子树,根节点连接左右子树利用后序遍历的性质,前序遍历的最后一个数就是根节点的值在中序遍历中按根节点的值原创 2020-12-27 14:27:26 · 120 阅读 · 0 评论 -
Leetcode105.从前序与中序遍历序列构造二叉树 Construct Binary Tree from Preorder and Inorder Traversal(Java)
Leetcode105.从前序与中序遍历序列构造二叉树 Construct Binary Tree from Preorder and Inorder Traversal(Java)##Array##, ##Tree##, ##Depth-first Search##从前序与中序遍历序列构造二叉树本题采用递归做法,创建根节点,递归创建左右子树,根节点链接两棵子树利用前序遍历的性质,前序遍历的第一个数就是根节点的值在中序遍历中按根节点的值找到根节点的位置temp,则temp左边时左子树的中序遍历原创 2020-12-27 14:16:13 · 84 阅读 · 0 评论 -
Leetcode113. 路径总和 Path Sum II(Java)
Leetcode113. 路径总和 Path Sum II(Java)##Tree##, ##Depth-first Search##路径总和II参考Leetcode112路径总和,用回溯法因为需要找到所有路径,因此需要DFS整棵子树dfs(TreeNode root, int sum)表示找到所有从root出发,到叶节点和为sum的路径的函数递归遍历左右儿子结点,以左儿子结点为例dfs(root.left, sum - root.val)表示找到所有从root.left出发,到叶子节点和为s原创 2020-12-26 13:45:39 · 130 阅读 · 0 评论 -
Leetcode112.路径总和 Path Sum(Java)
Leetcode112.路径总和 Path Sum(Java)##Tree##, ##Depth-first Search##路径总和采用DFS解决设置递归函数boolean hasPathSum(TreeNode root, int sum),考虑参数及返回结果,参数为一个树结点,和要求的总和sum,返回表示是否存在一条从这个树结点出发到叶节点的路径和为sum递归遍历时,遍历某个结点node的左儿子结点left时,问题就转变为关于左儿子的子问题hasPathSum(node.left, sum原创 2020-12-26 11:33:28 · 120 阅读 · 0 评论 -
Leetcode513. 找树左下角的值 Find Bottom Left Tree Value(Java)
Leetcode513. 找树左下角的值 Find Bottom Left Tree Value(Java)##Tree##, ##Depth-first Search##, ##Breadth-first Search##找树左下角的值,即找最底下一层的最左边结点本题深度优先搜索、广度优先搜索都可以解决BFS使用队列,每次循环每一层,记录每一层的最左边结点,最后返回的即为最底下一层的最左边结点DFS函数需要维护当前深度depth和已经遍历过的最大深度count,当前深度depth大于已遍历过的最原创 2020-12-26 10:39:29 · 135 阅读 · 0 评论 -
Leetcode404.左叶子之和 Sum of Left Leaves(Java)
Leetcode404.左叶子之和 Sum of Left Leaves(Java)##Tree##左叶子之和采用DFS方法,递归遍历所有结点判断结点是否存在左儿子判断结点的左儿子结点是否为叶子结点满足条件则求和时间复杂度: O(n)class Solution { int sum = 0; public int sumOfLeftLeaves(TreeNode root) { if (root == null) return sum; d原创 2020-12-26 10:20:57 · 90 阅读 · 0 评论 -
Leetcode257.二叉树的所有路径 Binary Tree Paths(Java)
Leetcode257.二叉树的所有路径 Binary Tree Paths(Java)##Tree##, ##Depth-first Search##二叉树的所有路径使用DFS、回溯法解决,采用前序遍历为减少创建对象的开销,使用ArrayList<Integer> path存储正在遍历的分支种已经被遍历过的结点每遍历一个新的结点,就将该结点加入到path的末尾中该结点是叶子结点,根据path种存储的元素,生成解字符串,加入到结果集合中该结点不是叶子结点,递归遍历其所有的非空儿原创 2020-12-25 18:03:39 · 114 阅读 · 0 评论 -
Leetcode100. 平衡二叉树Balanced Binary Tree(Java)
Leetcode100. 平衡二叉树Balanced Binary Tree(Java)##Tree##, ##Depth-first Search##, ##Recursion##平衡二叉树,判断一棵树是否为平衡二叉树平衡二叉树的每个结点的左右两个子树的高度差的绝对值不超过1递归遍历所有结点,每个结点的左右两颗子树都应该是平衡二叉树每个结点的左右两棵子树的高度差绝对值不超过1设计DFS函数时,要返回int高度和boolean是否为平衡二叉树两个类型不同的变量可将boolean是否为平衡二原创 2020-12-25 16:10:39 · 91 阅读 · 0 评论 -
Leetcode222.完全二叉树的节点个数 Count Complete Tree Nodes(Java)
Leetcode222.完全二叉树的节点个数 Count Complete Tree Nodes(Java)##Binary Search##, ##Tree##完全二叉树的节点个数可直接采用DFS或BFS方法求出总的结点总数DFS采用后续遍历,先计算左右两子树的总结点数,考虑到还有未被计算的根节点,返回总结点数 + 1时间复杂度: O(n)class Solution { public int countNodes(TreeNode root) { if (root原创 2020-12-25 10:04:28 · 149 阅读 · 0 评论 -
Leetcode111.二叉树的最小深度 Minimum Depth of Binary Tree(Java)
Leetcode111.二叉树的最小深度 Minimum Depth of Binary Tree(Java)##Tree##, ##Depth-first Search##, ##Breadth-first Search##二叉树的最小深度,可以采用DFS、BFSDFS对应二叉树的后序遍历,递归计算每个节点的最小深度结点为空时,返回0结点的左儿子不为空,右儿子为空,返回左子树最小深度 + 1结点的右儿子不为空,左儿子为空,返回右子树最小深度 + 1结点的左右儿子都不为空,返回左右子树最小深原创 2020-12-24 22:16:29 · 72 阅读 · 0 评论 -
Leetcode 559.N叉树的最大深度 Maximum Depth of N-ary Tree(Java)
Leetcode 559.N叉树的最大深度 Maximum Depth of N-ary Tree(Java)##Tree##, ##Depth-first Search##, ##Breadth-first Search##N叉树的最大深度采用DFS,类似二叉树求最大深度的方式,采用后序遍历的方式,递归处理所有结点叶子结点的深度记为1递归计算当前结点的子节点到叶子结点的最大深度max考虑到当前结点未被计算深度,返回max + 1时间复杂度: O(n)class Soluti原创 2020-12-24 20:47:30 · 97 阅读 · 0 评论 -
Leetcode 429.N叉树的层次遍历 N-ary Tree Level Order Traversal(Java)
Leetcode 429.N叉树的层次遍历 N-ary Tree Level Order Traversal(Java)##Tree##, ##Breadth-first Search##N叉树的层序遍历本题采用层序遍历BFS,借助队列实现队列q中保存树的一层的所有结点结果集合要求按层返回,每次拓展时,保证完整地扩展下一层的所有结点获取q的长度len,len层循环,将该层的所有结点遍历加入结果集,并且将遍历结点的左右儿子结点加入q种时间复杂度: O(n)class Solution {原创 2020-12-24 20:15:37 · 172 阅读 · 1 评论 -
Leetcode104.二叉树的最大深度 Maximum Depth of Binary Tree(Java)
Leetcode104.二叉树的最大深度 Maximum Depth of Binary Tree(Java)给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。二叉树的最大深度本题可以采用层次遍历BFS,递归DFS本题采用的递归方式本质上是二叉树的后序遍历对任何一棵树都有先求出左右子树的深度,在两深度中取一个最大值max考虑该子树的根节点还未被计算,正确的最大深度应是max + 1**时间复杂度:**O(n)原创 2020-12-24 19:35:15 · 104 阅读 · 1 评论 -
Leetcode101.对称二叉树 Symmetric Tree(Java)
Leetcode101.对称二叉树 Symmetric Tree(Java)##Tree##, ##Depth-first Search##, ##Breadth-first Search##对称二叉树,可以采用DFS、BFS解决使用DFS递归判断两棵子树是否对称两颗子树的根节点的值相等第一棵树的左子树和第二棵树的右子树相互对称,第一棵树的右子树和第二棵树的左子树相互对称时间复杂度: O(n)class Solution { public boolean isSymmetric(T原创 2020-12-24 19:15:23 · 144 阅读 · 2 评论 -
Leetcode226.翻转二叉树 Invert Binary Tree(Java)
Leetcode226.翻转二叉树 Invert Binary Tree(Java)##Tree##翻转一颗二叉树,采用前序遍历每次递归交换左右子树空结点时返回空结点或不处理空结点时间复杂度: O(n)class Solution { public TreeNode invertTree(TreeNode root) { if (root != null) { TreeNode temp = root.left; root.原创 2020-12-24 09:52:51 · 177 阅读 · 0 评论 -
Leetcode589.N叉树的前序遍历 N-ary Tree Preorder Traversal(Java)
Leetcode589.N叉树的前序遍历 N-ary Tree Preorder Traversal(Java)##Tree##与二叉树的前序遍历类似,可以采用深度优先遍历或迭代法完成采用迭代法时,要借助栈,且注意入栈顺序和出栈遍历顺序相反,因此当前遍历结点curr的儿子结点入栈时需要对儿子结点的集合进行翻转Collections.reverse(curr),才能保证出栈遍历时的顺序为前序遍历**时间复杂度:**O(n)DFSclass Solution { ArrayList<I原创 2020-12-22 15:44:21 · 94 阅读 · 0 评论 -
Leetcode637.二叉树的层平均值 Average of Levels in Binary Tree(Java)
Leetcode637.二叉树的层平均值 Average of Levels in Binary Tree(Java)##Tree##本题求二叉树每层的结点平均值可以采用DFS、BFS这里采用BFS层次遍历队列q中元素为某一层的结点,count = q.size()代表队列中元素的个数循环count次,遍历队列q中所有结点,求出该层所有结点的和sum,并且对每个结点都需要将其左右儿子加入队列中将每层的平均值sum/count加入到结果集合中**时间复杂度:**O(n)class Sol原创 2020-12-22 13:39:41 · 119 阅读 · 0 评论 -
Leetcode199.二叉树的右视图 Binary Tree Right Side View(Java)
Leetcode199.二叉树的右视图 Binary Tree Right Side View(Java)##Tree##, ##Depth-first Search##, ##Breadth-first Search##本题要求每一层的最右边元素,可以使用DFS、BFS使用BFS的层次遍历更直观BFS层次遍历做法队列q中的元素为某一层的所有元素,count代表该层的元素个数,即count = q.size()count次循环,将队列q中的结点出队,并将每个遍历的结点的左结点和右结点加入到队列原创 2020-12-22 10:23:43 · 91 阅读 · 0 评论 -
Leetcode107.二叉树的层次遍历II Binary Tree Level Order Traversal II(Java)
Leetcode107.二叉树的层次遍历II Binary Tree Level Order Traversal II(Java)##Tree##, ##Breadth-first Search##和102.二叉树的层次遍历做法大致相同不同部分在于对最终的结果List<List<Integer>> res需要使用Collections.reverse()反转一下得到最终结果**时间复杂度:**O(n)class Solution { public List<L原创 2020-12-22 09:34:08 · 79 阅读 · 0 评论