自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(104)
  • 收藏
  • 关注

原创 剑指offer - 正则表达式匹配

正则表达式匹配题目链接算法思路代码实现题目链接LeetCode 剑指offer - 正则表达式匹配算法思路采用递归暴力搜索的方法,把所有的方式匹配一遍,答案就出来了。递归暴力搜索比动态规划好理解多了。核心思路:通过不断的剪去 s 和 p 的首部,直到某一个或者两个都被剪空,就可以得出答案。首先,没有’*'的情况是最简单的,这时候只需要扫描一遍 s 和 p ,从首部开始比较两元素是否相同,如果相同就剪去,比较下一个即可//第i下标位置元素相同,'.'代表任何元素s.charAt(i) ==

2021-09-07 09:38:51 223

原创 剑指offer - 剪绳子

剪绳子题目链接算法思路贪心算法动态规划代码实现贪心实现动规实现题目链接牛客网 剑指offer - 剪绳子算法思路根据以前学过的数学知识可得,当一个数等分时,它的乘积之后是最大的。比如9,当9=3+3+3时,乘积之和333是最大的。为什么举例3?而不是其他呢?那是因为一个数最大分成3时,它的乘积才会最大。当 n=1时,没什么好分的当 n=2时,可以分成 2=1+1,但是它的乘积11=1,比2还小,还不如不分当 n=3时,可以分成3=1+2,但是它的乘积12=2,比3还小,还不如不分但是3之

2021-09-03 21:28:52 182

原创 剑指offer - 机器人的运动范围

机器人的运动范围题目链接算法思路代码实现题目链接牛客网 剑指offer - 机器人的运动范围算法思路这题和下面的问题的思路类似DFS模板团灭矩阵中的搜索问题都是采用dfs来解题这题很大不同的是,它并不需要撤销选择。如何判断它不需要撤销选择?就是看它走的路径是否还可以走,如果不能走了,则不需要撤销选择。就拿这题来说吧,求机器人最多能达到多少个路径?这就意味着机器人每走一格就算1,并且不能回退。这题还需要注意的点是,机器人是从(0,0)开始,意味着它只能向右或者向下,这点很重要。还有一个

2021-09-03 21:04:37 192

原创 剑指offer - 矩阵中的路径

矩阵中的路径题目链接算法思路代码实现题目链接牛客网 剑指offer - 矩阵中的路径算法思路这题是典型的DFS在矩阵中的搜索问题,可以参考这篇文章DFS模板团灭矩阵中的搜索问题同时这也是DFS模板套路的问题,也请参考这篇文章回溯框架团灭排列、组合、子集问题遍历矩阵,一旦某个字符等于单词的首个字符,便进入到dfs()方法中对访问过的元素标记为true,然后进入下一层dfs()在退出dfs()方法的时候,要还原代码实现import java.util.*;public clas

2021-09-01 21:28:34 81

原创 DFS模板团灭矩阵中的搜索问题

DFS模板团灭矩阵中的搜索问题算法模板应用场景例题应用算法模板class Solution { int m,n; public T function(int[][] grid) { //行 m = grid.length; //列 n = grid[0].length; //记录结点是否访问过 boolean[][] visited = new boolean[m][n];

2021-09-01 21:13:28 117

原创 剑指offer - 滑动窗口中的最大值

滑动窗口中的最大值题目链接单调队列数据结构算法思路代码实现题目链接牛客网 剑指offer - 滑动窗口中的最大值LeetCode 239题 - 滑动窗口最大值单调队列数据结构所谓的单调队列和普通的双端队列没什么不同。唯一的区别就是单调队列的元素是依次递减的,就是单调队列的首元素是最大,然后依次变小。单调队列里面有三个方法:addValue(int num):添加元素,所有元素都会依次添加到队尾,但是会把前面比新元素小的元素删掉getMaxValue():返回队列中的最大元素,也就是队头元

2021-08-30 16:02:25 102

原创 剑指offer - 数据流中的中位数

数据流中的中位数题目链接算法思路思路一思路二代码实现实现一实现二题目链接牛客网 剑指offer - 数据流中的中位数LeetCode 295题 - 数据流的中位数算法思路思路一常规思路初始化一个集合List,将元素添加到集合里找中位数时,先对集合排序,然后判断集合的元素个数是奇数还是偶数;如果是奇数,直接取中间的数值,注意类型转换;如果是偶数,则求出中间两位数的和/2.0思路二初始化一个大顶堆和一个小顶堆小顶堆:存储所有元素中较大的一半,堆顶存储的是其中最小的元素大顶堆:存储所

2021-08-29 21:12:40 89

原创 剑指offer - 二叉搜索树的第k个结点

二叉搜索树的第k个结点题目链接算法思路代码实现题目链接牛客网 - 二叉搜索树的第k个结点LeerCode 230题 - 二叉搜索树中第K小的元素算法思路讲到二叉搜索树,就要联想到它的中序遍历是有序的。所以只需要中序遍历二叉搜索树,答案就显而易见了代码实现/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int

2021-08-28 11:10:39 76

原创 剑指offer - 序列化二叉树

序列化二叉树题目链接算法思路代码实现题目链接牛客网 剑指offer - 序列化二叉树LeetCode 剑指offer - 序列化二叉树LeetCode 297题 - 二叉树的序列化和反序列化算法思路序列化采用层序遍历的方式,对树进行一层一层的遍历。初始化一个队列,把头节点添加进去。初始化一个StringBuilder sb,储存结果值弹出队列元素,若结点不为空,则把结点的值添加到 sb 中,并且把结点的左右节点都添加到队列中;若结点为空,则在sb中放一个表示空值的字符,比如sb.appe

2021-08-28 10:38:15 91

原创 剑指offer - 按之字形顺序打印二叉树

按之字形打印二叉树题目链接算法思路代码实现题目链接按之字形打印二叉树算法思路BFS算法框架这题主要考查的是树的层次遍历,只要按层次遍历思路来遍历就行了!唯一不同是在添加到结果列表的时候,先判断一下是否要反转列表。通过奇偶数来判断是否要反转列表。代码实现import java.util.*;/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null;

2021-08-27 20:52:21 79

原创 剑指offer - 对称的二叉树

对称的二叉树题目链接算法思路代码实现题目链接对称的二叉树算法思路不同子树下的比较就是这颗子树的左节点和另一个子树的右节点比较;这个子树的右结点和另一个子树的左节点比较。这也是镜像的特点题目给的是一个根节点,说实话并不太好比较两棵子树,这时候的思路就是增加参数。是的,重写一个方法,传入左子树和右子树,比较左子树和右子树的情况。分为以下三种:左子树为空并且右子树也为空,返回true左子树为空或者右子树为空,返回false左子树的值不等于右子树的值,返回false最后递归遍历左右子树的情况,

2021-08-27 20:14:50 61

原创 二叉树的非递归遍历模板

二叉树的非递归遍历非递归遍历模板前序遍历中序遍历后序遍历测试代码结果非递归遍历模板这个模板只适用于前序遍历和中序遍历private static void travers(TreeNode root) { Stack<TreeNode> stack = new Stack<>(); TreeNode cur = root; while (cur!=null || !stack.isEmpty()) { if

2021-08-26 21:49:33 141

原创 剑指offer - 二叉树的下一个节点

二叉树的下一个节点题目链接算法思路代码实现题目链接二叉树的下一个结点算法思路这题并不是简单地考查中序遍历,而是在理解中序遍历的基础上,明白下一个结点的位置。二叉树的下一个结点分两种情况有右结点的情况如果存在右结点,那么下一个结点必定是这个右孩子的最左结点无右结点的情况如果没有右节点,那么必须向上找第一个左节点指向的树包含该结点的祖先结点代码实现/*public class TreeLinkNode { int val; TreeLinkNode lef

2021-08-25 22:14:20 61

原创 剑指offer - 删除排序链表中重复的结点

删除排序链表中重复的结点题型一题目描述算法思路代码实现题型二题目描述算法思路代码实现题型一题目描述存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。返回同样按升序排列的结果链表。示例输入:head = [1,1,2]输出:[1,2]算法思路定义一个当前节点 cur 指向head如果 cur.val=cur.next.val,使 cur.next = cur.next.next;否则 cur = cur.next直到 cu

2021-08-25 21:34:48 82

原创 剑指offer - 链表中环的入口结点

链表中环的入口结点题目描述算法思路代码实现题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。算法思路使用快慢指针的思路,双指针技巧框架定义两个指针fast和slow快指针一次走两步,慢指针一次走一步当两个指针相遇时,慢指针回到头结点此时,快指针走一步,慢指针走一步当两个指针相遇时,就是链表中环的入口结点代码实现/* public class ListNode { int val; ListNode next = null;

2021-08-24 16:50:13 90

原创 双指针技巧框架

双指针技巧框架双指针分类快慢指针常见用法1.判断链表中是否有环2.找出链表中环的起始位置3.找到链表的中点左右指针常见用法1.二分查找2.两数之和问题3.滑动窗口双指针分类双指针一般分为两类:快慢指针和左右指针。快慢指针主要解决链表问题,比如判断链表中是否有环、环的结点在哪左右指针主要解决数组(或字符串)问题,比如二分查找,滑动窗口等。快慢指针常见用法1.判断链表中是否有环boolean hasCycle(ListNode head) { ListNode fast, slow;

2021-08-24 16:40:21 122

原创 剑指offer - 构建乘积数组

构建乘积数组题目描述算法思路代码实现题目描述给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];)对于A长度为1的情况,B无意义,故而无法构建,因此该情况不会存在。示例输入:[1,2,3,4,5]返回值:[120,60,40,30

2021-08-23 22:00:33 87

原创 剑指offer - 数组中重复的数字

数组中重复的数字题目描述算法思路代码实现题目描述在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 算法思路对于重复的问题,应该想到HashMap和HashSet两个集合。算法流程:初始化一个Hashset,记为set遍历数组,若数字在set中,直接返回,否则添加到set集合中返回

2021-08-23 16:32:10 66

原创 剑指offer - 不用加减乘除做加法

不用加减乘除做加法题目描述算法思路代码实现题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。示例输入:1,2返回值:3算法思路不能用常规的加减乘除,意味着这题要考察的就是位运算的应用。设两个二进制的数字为 a + b,a(i) 代表 aa 的二进制第 i 位,则有以下四种情况观察发现,无进位和 与 异或运算 规律相同,进位 和 与运算 规律相同(并需左移一位)无进位和 n 与进位 c 的计算公式如下n = a ^ b 异或运算c = (

2021-08-23 15:40:12 80

原创 剑指offer - 求1+2+3+...+n

求1+2+3+...+n题目描述算法思路代码实现题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。示例输入:5返回值:15算法思路这题主要考查逻辑运算短路效应。常见的逻辑运算有三种:与&&、或||、非!。其中的短路效应是指if(A && B) 如果A为false,则B的判断不会执行,直接跳过(即短路)。直接判定 A && B为falseif(

2021-08-23 15:20:04 70

原创 剑指offer - 圆圈中最后剩下的数字

圆圈中最后剩下的数字题目描述算法思路代码实现题目描述0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。示例输入: n = 5, m = 3输出: 3算法思路这里采用很常规的正向思路:定义一个列表 list,把先把 n 个元素加进来计算出下

2021-08-21 16:08:13 59

原创 剑指offer - 扑克牌顺子

扑克牌顺子题目描述算法思路思路一思路二代码实现实现一实现二题目描述现在有2副扑克牌,从扑克牌中随机五张扑克牌,我们需要来判断一下是不是顺子。有如下规则:A为1,J为11,Q为12,K为13,A不能视为14大、小王为 0,0可以看作任意牌如果给出的五张牌能组成顺子(即这五张牌是连续的)就输出true,否则就输出false。例如:给出数据[6,0,2,0,4]中间的两个0一个看作3,一个看作5 。即:[6,3,2,5,4]这样这五张牌在[2,6]区间连续,输出true数据保证每组5个数字,

2021-08-20 20:16:38 73

原创 剑指offer - 翻转单词序列

翻转单词序列题目描述算法思路代码实现题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“nowcoder. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a nowcoder.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?示例输入:"nowcoder. a am I"返回值:"I am a nowcoder."

2021-08-20 16:32:28 79

原创 剑指offer - 左旋转字符串

左旋转字符串题目描述算法思路代码实现题目描述字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例输入: s = "abcdefg", k = 2输出: "cdefgab"算法思路最简单的思路就是利用String类中的切分子串的函数,将字符串切成两半,然后重新拼接。代码实现class Solution { public Strin

2021-08-20 16:22:27 85

原创 剑指offer - 和为S的两个数字

和为S的两个数字题目描述算法思路代码实现题目描述输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]算法思路看到有序的数组需要联想到双指针。定义两个指针 left=0,right=nums.length()-1sum = nums[left] + nums[right]如果sum < target,则le

2021-08-20 16:17:21 45

原创 剑指offer - 和为S的连续正数序列

和为S的连续正数序列题目描述算法思路代码实现题目描述输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例输入:target = 9输出:[[2,3,4],[4,5]]算法思路这道题就是滑动窗口算法的应用,可以参考一下这篇文章滑动窗口模板这道题要注意的点:left 和 right 指针是从1开始的while循环的结束条件是:target/2 +1。为什么呢?因为超过targ

2021-08-19 11:58:22 63

原创 滑动窗口模板

滑动窗口基本思想算法模板应用场景例题应用子串子数组参考资料基本思想滑动窗口是双指针技巧的一种,定义两个指针,left 和 right,用 left,right 表示滑动窗口的左边界和右边界,通过改变left,right来扩展和收缩滑动窗口,可以想象成一个窗口在滑动。这就是滑动窗口的基本思想使用滑动窗口前需要思考以下4个点:增大窗口时,要更新哪些数据?什么时候停止增大窗口,开始缩小窗口?缩小窗口时,要更新哪些数据?最后的结果在增大窗口时更新,还是缩小窗口时更新?写滑动窗口算法前一定要明白以

2021-08-18 22:06:10 222

原创 剑指offer - 数组中只出现一次的两个数字

数组中只出现一次的两个数字题目描述基础补充异或(^)按位与(&)算法思路思路一思路二代码实现实现一实现二题目描述一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。示例输入:[1,4,1,6]返回值:[4,6]说明:返回的结果中较小的数排在前面基础补充异或(^)异或 xor 主要用于判断两个值是否相等0 ^ 0 = 01 ^ 0 = 10 ^ 1 = 11 ^ 1 = 0同时异或满足交换性和结合性a ^ b = b

2021-08-17 21:28:30 99

原创 剑指offer - 平衡二叉树

平衡二叉树题目描述算法思路代码实现题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。注:我们约定空树是平衡二叉树。示例输入:{1,2,3,4,5,6,7}返回值:true算法思路先求出左右子树的高度。参考这篇文章 二叉树深度判断左右子树的高度的绝对值是否大于1

2021-08-17 20:38:01 90

原创 剑指offer - 二叉树的深度

二叉树的深度题目描述算法思路思路一思路二代码实现实现一实现二题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。示例输入:{1,2,3,4,5,#,6,#,#,7}返回值:4算法思路思路一采用BFS算法思路,也就是树的层序遍历。可以参考以下文章BFS算法框架思路很简单:每遍历一层树,相应的树的深度+1思路二采用后序遍历的思路先遍历左子树,得到 left再遍历右子树,得到 right最后比较左右子树谁

2021-08-16 21:00:53 148

原创 BFS算法框架

BFS算法框架BFS算法描述核心思想算法本质和DFS的区别主要数据结构BFS算法框架例题应用参考资料BFS算法描述核心思想BFS的核心思想就是把问题抽象成一幅图,从一个点开始,向四周围扩散算法本质本质就是在一幅图中找到起点 start 到终点 target 距离最短的路径和DFS的区别BFS找到路径一定是最短的主要数据结构队列BFS算法框架// 计算从起点 start 到终点 target 的最近距离int BFS(Node start, Node target) { Que

2021-08-16 20:43:22 137

原创 剑指offer - 数字在升序数组中出现的次数

数字在升序数组中出现的次数题目描述算法思路代码实现题目描述统计一个数字在升序数组中出现的次数。示例输入:[1,2,3,3,3,3,4,5],3返回值:4算法思路这题就是二分查找算法的应用,请参考这边文章二分查找模板这道题的算法思路:查找出目标数字在数组中出现的左侧边界查找出目标数字在数组中出现的右侧边界然后右侧边界-左侧边界+1就是目标数字在升序数组中出现的次数代码实现public class Solution { public int GetNumberOfK(i

2021-08-16 11:36:22 142

原创 二分查找模板

二分查找模板算法模板例题应用(完全套用模板)参考资料算法模板package com.search;/** * 二分查找 * @author: 小LeetCode~ **/public class BinarySearch { public static void main(String[] args) { //最基本的二分查找// int[] nums = {1,2,3,4,5,6};// int result_mid = binar

2021-08-16 11:15:13 111

原创 剑指offer - 两个链表的第一个公共节点

两个链表的第一个公共节点题目描述算法思路思路一思路二代码实现实现一实现二题目描述输入两个链表,找出他们的第一个公共节点如下两个链表:在节点c1开始相交算法思路思路一比较常规的思路:1.定义两个指针,分别指向两个链表,计算出两个链表的长度2. 循环两个链表,哪个链表长度比较长,就移动哪个指针,当链表长度相同时,就同时移动两个指针,直到指针指向是同一个节点,或者有一个链表为空思路二思路:定义两个指针A和B,分别指向两个链表头headA和headBA、B指针同时移动指针,当链表A为空

2021-08-13 19:45:03 106

原创 剑指offer - 数组中的逆序对

数组中的逆序对题目描述算法思路代码实现题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例输入: [7,5,6,4]输出: 5算法思路这道题考查的就是归并排序。在归并排序的过程中就可以计算出逆序对的总数。归并排序框架package com.sort;import java.util.Arrays;/** * 归并排序 * * @author: 小LeetCode~ **/public c

2021-08-12 19:51:40 98

原创 剑指offer - 第一个只出现一次的字符

第一个只出现一次的字符题目描述算法思路代码实现题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)示例输入:"google"返回值:4算法思路这道题主要是HashMap的应用。定义一个HashMap<Character,Boolean>遍历字符串,放入HashMap中。如果重复存在的字符,map.get()会返回false。只有第一次出现的字

2021-08-12 19:38:03 73

原创 剑指offer - 丑数

丑数题目描述算法思路代码实现丑数进阶题目描述算法思路思路一思路二代码实现实现一实现二题目描述给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。丑数 就是只包含质因数 2、3 和/或 5 的正整数。示例1输入:n = 6输出:true解释:6 = 2 × 3示例2输入:n = 8输出:true解释:8 = 2 × 2 × 2示例3输入:n = 14输出:false解释:14 不是丑数,因为它包含了另外一个质因数 7 。算

2021-08-11 12:20:55 135

原创 剑指offer - 把数组排成最小的数

把数组排成最小的数题目描述算法思路代码实现题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。示例输入:[3,32,321]返回值:"321323"算法思路这道题的突破口就是如何对这些数字排序?很明显,3和32来拼接,332>323的,也就是说3要排在32后面。这里涉及到的公式算法应该是这样的:x + y > y + x,那么 x 比 y 大,x

2021-08-10 21:07:01 105

原创 剑指offer - 整数中1出现的次数

整数中1出现的次数题目描述算法思路思路一思路二代码实现实现一实现二题目描述输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数例如,1~13中包含1的数字有1、10、11、12、13因此共出现6次示例输入:13返回值:6算法思路思路一采用暴力的方法,将每个数字转换为String,然后判断String里面是否有1,每到一个1,count就加1思路二找规律以 3210 这个数为例:3210 = 3 * 1000 + 2 * 100 + 1 * 10 + 0 * 1从千位

2021-08-10 20:14:21 104

原创 剑指offer - 连续子数组的最大和

连续子数组的最大和题目描述算法思路代码实现题目描述输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n).示例输入:[1,-2,3,10,-4,7,2,-5]返回值:18说明:输入的数组为{1,-2,3,10,—4,7,2,一5},和最大的子数组为{3,10,一4,7,2},因此输出为该子数组的和 18。 算法思路这题是动态规划的解题思路。定义 dp [] 数组,dp[i] 表示以 array[i] 结

2021-08-08 21:03:56 114

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除