自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MiniGPT4模型训练与部署

MiniGPT-4的训练包含两个 alignment stages.

2023-06-26 22:00:49 2106 2

原创 Vicuna模型权重合成及模型部署

Vicuna模型权重合成及模型部署

2023-06-19 23:28:31 1085 1

原创 基于递归方法从前序与中序遍历序列构造二叉树

基于递归方法从前序与中序遍历序列构造二叉树题目解决思路代码说明题目(1)给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。(2)示例如下:输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]输出: [3,9,20,null,null,15,7]解决思路思路:采用递归思想解决。本题中递归函数表示的意义:找到根节点并建立

2022-03-07 21:28:50 717

原创 基于递归求二叉树路径总和

基于递归求二叉树路径总和题目解决思路代码说明题目(1)给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在从根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。(2)叶子节点是指没有子节点的节点。(3)示例如下:输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22输出:true解释:等于

2022-03-07 20:38:33 653

原创 判断一棵二叉树是否为平衡二叉树

基于递归判断一棵二叉树是否为平衡二叉树题目解决思路代码说明题目(1)给定一个二叉树,判断它是否是高度平衡的二叉树。(2)本题中,一棵高度平衡二叉树的定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。(3)示例如下:输入:root = [3,9,20,null,null,15,7]输出:true解决思路采用递归思想解决。具体步骤:第一步:递归获取根节点左子树的高度 L。第二步:递归获取根节点右子树的高度 H。第三步:判断是否平衡。如果 H 和 L 之差的绝对

2022-03-07 19:44:28 773

原创 递归实现二叉树的锯齿形层序遍历

二叉树的锯齿形层序遍历题目解决思路代码说明题目(1)给你二叉树的根节点 root ,返回其节点值的锯齿形层序遍历(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。(2)示例如下所示:输入:root = [3,9,20,null,null,15,7]输出:[[3],[20,9],[15,7]]解决思路采用递归思想解决。具体步骤:第一步:先将树中的所有节点按照从上到下,从左到右的顺序存储在二维数组中,请参考从上到下打印二叉树第二步:将二维数组中下标为奇数的数组中

2022-03-07 18:53:03 391

原创 递归实现二叉树的层序遍历 II

二叉树的层序遍历 II题目解决思路代码说明题目(1)给你二叉树的根节点 root ,返回其节点值自底向上的层序遍历 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)。(2)示例如下:输入:root = [3,9,20,null,null,15,7]输出:[[15,7],[9,20],[3]]解决思路采用递归思想解决。具体步骤:第一步:先将树中的所有节点按照从上从上到下,从左到右的顺序存储在二维数组中,请参考从上到下打印二叉树第二步:将二维数组进行翻转,即将第一个数组和最后

2022-03-07 17:09:55 378

原创 递归实现从上到下打印二叉树 II

从上到下打印二叉树 II题目解决思路代码说明题目(1)从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。(2)示例如下:给定二叉树: [3,9,20,null,null,15,7],返回其层次遍历结果:解决思路思路1:采用递归思想解决将树的节点存储在二维数组中,树中的每一行对应二维数组中的一个数组。并用 k 记录树的每一行应该存储在二维数组的第几个数组中。具体步骤:第一步:将根节点放入二维数组中下标为 k = 0 的数组中。第二步:递归遍历根节点的左节

2022-03-07 15:15:50 550

原创 递归实现翻转二叉树

左右翻转二叉树题目解决思路代码说明题目(1)给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。(2)示例如下:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]解决思路采用递归思想实现。第一步:先交换根节点的左右节点。第二步:递归交换根节点的左节点的左右节点。第三步:递归交换根节点的右节点的左右节点。代码说明对应LeetCode第226题。链接:https://leetcode-cn.com/problems/inve

2022-03-07 13:48:47 619

原创 递归实现N叉树的前序遍历

N叉树的前序遍历题目解决思路代码说明题目(1)给定一个 n 叉树的根节点 root ,返回 其节点值的前序遍历 。(2)n 叉树在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。(3)示例如下:输入:root = [1,null,3,2,4,null,5,6]输出:[1,3,5,6,2,4]解决思路代码说明对应LeetCode第589题。链接:https://leetcode-cn.com/problems/n-ary-tree-preorder-

2022-03-07 10:50:51 606

原创 递归实现二叉树的前序遍历

二叉树的前序遍历题目解决思路代码说明题目(1)给你二叉树的根节点 root ,返回它节点值的 前序 遍历。(2)示例如下:输入:root = [1,null,2,3]输出:[1,2,3]解决思路采用递归思想解决。前序遍历的顺序是:根节点 --> 左节点 --> 右节点。具体步骤:第一步:输出跟节点的值。第二步:递归遍历左子树。第三步:递归遍历右子树。代码说明对应LeetCode第144题。链接:https://leetcode-cn.com/prob

2022-03-07 10:07:09 637

原创 表现良好的最长时间段

表现良好的最长时间段题目解决思路代码说明题目(1)给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。(2)我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。(3)所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格 大于「不劳累的天数」。(4)请你返回「表现良好时间段」的最大长度。(5)示例如下:输入:hours = [9,9,6,0,6,6,9]输出:3解释:最长的表现良好时间段是 [9,9,6]。解决思路第一步:将

2022-03-02 11:21:55 411

原创 函数的独占时间

基于栈求函数的独占时间题目解决思路代码说明题目(1)有一个 单线程 CPU 正在运行一个含有 n 道函数的程序。每道函数都有一个位于 0 和 n-1 之间的唯一标识符。(2)函数调用存储在一个调用栈上:当一个函数调用开始时,它的标识符将会推入栈中。而当一个函数调用结束时,它的标识符将会从栈中弹出。标识符位于栈顶的函数是当前正在执行的函数 。每当一个函数开始或者结束时,将会记录一条日志,包括函数标识符、是开始还是结束、以及相应的时间戳。(3)给你一个由日志组成的列表 logs ,其中 logs[i]

2022-03-01 20:49:22 503

原创 基本计算器 II

双栈实现基本计算器 II题目解决思路代码说明题目(1)给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。(2)整数除法仅保留整数部分。(3)示例1如下:输入:s = “3+2*2”输出:7(4)示例2如下:输入:s = " 3+5 / 2 "输出:5解决思路用双栈实现基本计算器,其中一个栈为操作数栈,另外一个栈为运算符栈。先将表达式拆分为两部分,一部分只包含操作数,另外一部分只包含运算符。若当前即将入栈的运算符的优先级小于等于栈顶运算符的优先级时,先根据栈顶的

2022-03-01 17:12:07 407

原创 验证二叉树的前序序列化

缩点法验证二叉树的前序序列化题目解决思路代码说明题目(1)序列化二叉树的一种方法是使用前序遍历。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。(2)如下为一棵二叉树:(3)例如,上面的二叉树可以被序列化为字符串 “9,3,4,#,#,1,#,#,2,#,6,#,#”,其中 # 代表一个空节点。(4)给定一串以逗号分隔的序列,验证它是否是正确的二叉树的前序序列化。编写一个在不重构树的条件下的可行算法。(5)每个以逗号分隔的字符或为

2022-03-01 16:04:27 1059

原创 二叉树的后序遍历

双栈模拟递归过程,实现二叉树的后序遍历题目解决思路代码说明题目(1)给你一棵二叉树的根节点 root ,返回其节点值的后序遍历 。(2)示例如下输入:root = [1,null,2,3]输出:[3,2,1]解决思路前序遍历顺序:根节点 -> 左节点 - >右节点;中序遍历:左节点 -> 根节点 -> 右节点;后续遍历:左节点 -> 右节点 -> 根节点。二叉树遍历适合采用递归的思想解决。使用两个栈(数据栈和状态栈)模拟递归过程,即采用非递归函数实现

2022-03-01 11:28:33 1172

原创 删除最外层括号

删除最外层括号题目解决思路代码说明题目(1)有效括号字符串为空 “”、"(" + A + “)” 或 A + B ,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接。(2)例如,"","()","(())()" 和 “(()(()))” 都是有效的括号字符串。(3)如果有效字符串 s 非空,且不存在将其拆分为 s = A + B 的方法,我们称其为原语(primitive),其中 A 和 B 都是非空有效括号字符串。(4)给出一个非空有效字符串 s,考虑将其进行原语化分解,使得:s =

2022-03-01 10:11:25 200

原创 移除无效括号

移除无效的括号题目解决思路代码说明题目(1)给你一个由 ‘(’、’)’ 和小写字母组成的字符串 s。(2)你需要从字符串中删除最少数目的 ‘(’ 或者 ‘)’ (可以删除任意位置的括号),使得剩下的「括号字符串」有效。请返回任意一个合法字符串。(3)有效「括号字符串」应当符合以下 任意一条 要求:空字符串或只包含小写字母的字符串。可以被写作 AB(A 连接 B)的字符串,其中 A 和 B 都是有效「括号字符串」。可以被写作 (A) 的字符串,其中 A 是一个有效的「括号字符串」。(4)示

2022-02-28 16:32:02 441

原创 有效的括号

基于栈判断字符串中的括号是否有效题目解决思路代码说明题目(1)给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。(2)有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。(3)示例如下输入:s = “()[]{}”输出:true解决思路用栈记录括号,当遇到左括号时就入栈,当遇到右括号时就出栈。判断栈顶元素是否为与当前右括号相匹配的左括号,如果匹配,则弹出栈,如果不匹配,则说明不是有效的括号序列。则返回f

2022-02-28 15:53:26 61

原创 验证栈序列

验证栈的入栈顺序和出栈顺序题目解决思路代码说明题目(1)给定 pushed 和 popped 两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false 。(2)示例如下:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1), push(2), push(3), push(4), pop() -&gt

2022-02-28 11:16:40 883

原创 基于栈比较含退格的字符串

比较含退格的字符串题目解决思路代码说明题目(1)给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。(2)注意:如果对空文本输入退格字符,文本继续为空。(3)示例如下:输入:s = “ab#c”, t = “ad#c”输出:true解释:s 和 t 都会变成 “ac”。解决思路用栈s1和t1分别记录对字符串s和t根据要求转换后的结果。然后逐位比较栈s1和t1对应的字符是否相等。说明:遇到退格符#后,要删除退格符代码

2022-02-21 09:20:45 373

原创 用栈记录棒球比赛得分

棒球比赛题目解决思路代码说明题目(1)你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。(2)比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表 ops,其中 ops[i] 是你需要记录的第 i 项操作,ops 遵循下述规则:整数 x:表示本回合新获得分数 x“+” :表示本回合新获得的得分是前两次得分的总和。题目数据保证记录此操作时前面总是存在两个有效的分数。“D”:表示本回合新获得的得分是前一次得分的两倍。题目数据保证记录

2022-02-19 16:25:17 732

原创 化栈为队列

化栈为队题目解决思路代码说明题目(1)实现一个MyQueue类,该类用两个栈来实现一个队列。(2)示例如下:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // 返回 1queue.pop(); // 返回 1queue.empty(); // 返回 false(3)说明你只能使用标准的栈操作 – 也就是只有 push to top, peek/pop from top, size

2022-02-19 14:34:16 681

原创 CPU任务调度

CPU任务调度题目解决思路代码说明题目(1)给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。(2)然而,两个相同种类的任务之间必须有长度为整数 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。(3)你需要计算完成所有任务所需要的最短时间 。(4)示例如下:输入:ta

2022-02-17 11:23:30 298

原创 煎饼排序问题

煎饼排序题目解决思路代码说明题目(1)给你一个整数数组 arr ,请使用 煎饼翻转 完成对数组的排序。(2)一次煎饼翻转的执行过程如下:选择一个整数 k ,1 <= k <= arr.length反转子数组 arr[0…k-1](下标从 0 开始)(3)例如,arr = [3,2,1,4] ,选择 k = 3 进行一次煎饼翻转,反转子数组 [3,2,1] ,得到 arr = [1,2,3,4] 。(4)以数组形式返回能使 arr 有序的煎饼翻转操作所对应的 k 值序列。任何将数

2022-02-16 16:36:15 437

原创 基于队列解决柠檬水找零

柠檬水找零题目解决思路代码说明题目(1)在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品(按账单 bills 支付的顺序),一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。(2)注意,一开始你手头没有任何零钱。(3)给你一个整数数组 bills ,其中 bills[i] 是第 i 位顾客付的账。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。(4)示例

2022-02-16 14:44:00 282

原创 判断两个字符串是否为亲密字符串

亲密字符串题目解决思路代码说明题目(1)给你两个字符串 s 和 goal ,只要我们可以通过交换 s 中的两个字母得到与 goal 相等的结果,就返回 true ;否则返回 false 。(2)交换字母的定义是:取两个下标 i 和 j (下标从 0 开始)且满足 i != j ,接着交换 s[i] 和 s[j] 处的字符。例如,在 “abcd” 中交换下标 0 和下标 2 的元素可以生成 “cbad” 。(3)示例如下:输入:s = “ab”, goal = “ba”输出:true解释:你可以

2022-02-16 10:02:45 548

原创 基于队列寻找第K个数(第K个素因子)

基于队列寻找第K个数题目解决思路代码说明题目(1)有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个素因子。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。(2)示例如下所示:输入: k = 5输出: 9解决思路代码说明对应LeetCode第17.09题。链接:https://leetcode-cn.com/problems/get-kth-magic-number-lcci/...

2022-02-14 17:38:10 739

原创 基于队列实现最近的请求次数

基于队列实现最近的请求次数题目解决思路代码说明题目(1)写一个 RecentCounter 类来计算特定时间范围内最近的请求。(2)请你实现 RecentCounter 类:RecentCounter() 初始化计数器,初始化请求数为 0 。int ping(int t) 在时间 t 添加一个新请求,其中 t 表示以毫秒为单位的某个时间,并返回过去 3000 毫秒内发生的所有请求数(包括新请求)。确切地说,返回在 [t-3000, t] 内发生的请求数。保证每次对 ping 的调用都使用比之前

2022-02-14 16:42:01 73

原创 基于两个双端队列实现前中后队列

设计前中后队列题目解决思路代码说明题目(1)请你设计一个队列,支持在前,中,后三个位置的 push 和 pop 操作。(2)请你完成 FrontMiddleBack 类:FrontMiddleBack() 初始化队列。void pushFront(int val) 将 val 添加到队列的 最前面 。void pushMiddle(int val) 将 val 添加到队列的 正中间 。void pushBack(int val) 将 val 添加到队里的 最后面 。int popFront

2022-01-28 14:02:12 908

原创 基于动态数组设计循环双端队列

设计循环双端队列题目解决思路代码说明题目设计实现双端队列。你的实现需要支持以下操作:MyCircularDeque(k):构造函数,双端队列的大小为k。insertFront():将一个元素添加到双端队列头部。 如果操作成功返回 true。insertLast():将一个元素添加到双端队列尾部。如果操作成功返回 true。deleteFront():从双端队列头部删除一个元素。 如果操作成功返回 true。deleteLast():从双端队列尾部删除一个元素。如果操作成功返回 true。g

2022-01-27 15:59:10 98

原创 基于动态数组设计循环队列

基于动态数组设计循环队列题目解决思路代码说明题目(1)设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。(2)循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间(假溢出)。但是使用循环队列,我们能使用这些空间去存储新的值。(3)你的实现应该支持如下操作:MyCircularQueue(k): 构造器,

2022-01-27 14:23:21 80

原创 复制带随机指针的单链表

复制带随机指针的链表题目解决思路代码说明题目(1) 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random,该指针可以指向链表中的任何节点或空节点。(2) 构造这个链表的深拷贝。 深拷贝应该正好由 n 个全新节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。(3) 例如,如果原链表中有 X 和 Y 两

2022-01-26 13:29:51 600

原创 双虚头法分隔单链表

分隔单链表题目解决思路代码说明题目给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有小于 x 的节点都出现在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例如下:输入:head = [1,4,3,2,5,2], x = 3输出:[1,2,2,4,3,5]解决思路创建两个虚拟头节点small和big,创建两个指针s和b分别指向虚拟头结点small和big,创建指针q记录head的下一个节点。遍历链表,当节点的值小于给定的值时,将该节点

2022-01-25 17:26:13 1018

原创 删除按升序排列的单链表中的所有重复元素

删除单链表中的所有重复元素题目解决思路代码说明题目存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中没有重复出现的数字。并返回同样按升序排列的结果链表。示例如下所示:输入:head = [1,2,3,3,4,4,5]输出:[1,2,5]解决思路采用虚拟头节点和两个指针p、q解决。初始时刻,p指向虚拟头结点,q指针用于从head开始寻找不重复的节点,。先判断p节点后面的两个节点是否重复,如果是重复节点,继续向后寻找,找到不重

2022-01-25 13:37:40 1589

原创 删除按升序排列的单链表中的重复元素

删除链表中的重复元素题目解决思路代码说明题目存在一个按升序排列的链表,给你这个链表的头节点 head,请你删除所有重复的元素,使每个元素 只出现一次 。然后返回同样按升序排列的结果链表。如下示例所示:输入:head = [1,1,2]输出:[1,2]解决思路命令指针p指向链表的头节点,然后判断p的下一个节点的值和p节点的值是否相等,若相等,则删除p的下一个节点,如果不相等,则将p向下移动一位,然后继续判断。代码C++代码# include <stdio.h>struc

2022-01-25 10:03:19 1169

原创 双指针法删除单链表的倒数第n个节点

删除单链表的倒数第n个节点题目解决思路代码说明题目给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例如下:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]解决思路思路: 先定位到要删除的节点的上一个节点,然后删除需要删除的节点。步骤:定义两个指针p和q,p指向虚拟头节点,q指向p的下一个节点。先让指针q向前走n步,然后p和q同时向前移动。当q指向null时,p指向的节点为要删除的节点的上一个节点。删除p的下一个节点。代码

2022-01-24 17:56:46 146

原创 基于递归翻转法两两交换链表中的节点

两两交换链表中的节点题目解决思路代码说明题目给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例如下:输入:head = [1,2,3,4]输出:[2,1,4,3]解决思路两两交换链表中的节点,即两个节点作为一组进行交换,依次下去直到结束。两个节点作为一组进行交换,即k个一组翻转单链表中k等于2的特殊情况。k个一组翻转单链表方法见如下博文:参考这里综上,两两交换链表中的节点即k个一组翻转单链表中k=2的情

2022-01-24 16:04:02 265

原创 向右旋转链表k个位置

对链表进行旋转题目解决思路代码说明题目给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。示例:将如下链表向右移动2位。输入:head = [1,2,3,4,5], k = 2输出:[4,5,1,2,3]解决思路第一步:初始时刻定义指针p指向head节点,然后让p指向链表的最后一个节点,并将链表收尾相连构成环。接着让p指向head节点。第二步:将链表向右旋转k-1步,使指向head的指针p走到最终要输出的头节点的上一个节点(注意:设链表的长度为L,向右旋转k步

2022-01-24 11:32:03 1248

原创 K个一组反转单链表

K个一组反转单链表题目解决思路代码说明题目给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。说明:(1)k 是一个正整数,它的值小于或等于链表的长度。(2)如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例如下所示:输入:head = [1,2,3,4,5], k = 2输出:[2,1,4,3,5]解决思路基于递归反转单链表第m到第n个节点的方法解决此题,该方法参考此博文:参考这里初始化:先创建一个虚拟头结点ret,再定义一个指针p指向虚拟头结点

2022-01-21 13:08:00 1666

空空如也

空空如也

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

TA关注的人

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