算法
文章平均质量分 92
XiaoZhi-paperfly
这个作者很懒,什么都没留下…
展开
-
算法通关村第十九关——动态规划高频问题(白银)
代码随想录确定dp数组(dp table)及其下标的含义确定递推公式初始化dp数组确定遍历顺序举例推导dp数组。原创 2023-09-10 16:44:47 · 571 阅读 · 3 评论 -
算法通关村第十九关——动态规划是怎么回事(青铜)
动态规划是一种解决复杂问题的算法思想,它将一个大问题分解为多个相互关联的子问题,并通过递推关系将子问题的解整合起来,最终得到原问题的解。动态规划的核心思想是将问题划分为重叠子问题,并存储子问题的解,避免重复计算。动态规划通常用于求解最优化问题,如求解最长公共子序列、最短路径、背包问题等。它的基本步骤包括定义状态、设置初始状态、确定状态转移方程和计算最优解。动态规划的优点是减少了重复计算,提高了算法效率,但它也需要额外的空间来存储子问题的解,因此在使用动态规划时需要权衡时间和空间的开销。原创 2023-09-07 13:19:42 · 700 阅读 · 1 评论 -
算法通关村第十八关——回溯热门问题(白银)
对于英文字母,它们的 ASCII 码中的第 6 位表示大小写信息,其中大写字母的第 6 位为 0,小写字母的第 6 位为 1。同时,由于异或运算是可逆的,所以在递归回溯时,再次对同一个字符进行异或操作,可以恢复原来的大小写形式。我们发现大写字符与其对应的小写字符的 ASCII 的差为 32,32 这个值如果敏感的话,它是 2^5,在编程语言中,可以表示为 1 << 5。则,可以使用boolean[]可以记录,用数组的方式,记录true,false(说实话,我也是第一次用。异或运算(^)是一种位运算符。原创 2023-09-05 14:17:07 · 201 阅读 · 0 评论 -
算法通关村第十八关——回溯是怎么回事(青铜)
回溯算法是一种解决问题的常见方法,特别适用于在给定约束条件下搜索所有可能的解空间。它通过不断地尝试和撤销选择来寻找问题的解,因此也被称为"试错法"。本文将详细介绍回溯算法,并通过图解和具体例子讲解其原理和应用。回溯可以视为递归的拓展,很多思想和解法都与递归密切相关,在很多材料中都将回溯都与递归同时解释,例如本章2.1的路径问题就可以使用递归和回溯两种方法来解决。因此学习回溯时,我们对比递归来分析其特征会理解更深刻。原创 2023-09-04 17:08:29 · 610 阅读 · 0 评论 -
算法通关村第十七关——贪心高频问题(白银)
i从0开始累加rest[i],和记为curSum,一旦curSum小于零,说明[0, i]区间都不能作为起始位置,因为这个区间选择任何一个位置作为起点,到i这里都会断油,那么起始位置从i+1算起,再从0计算curSum。此时前面出现过所有字母,最远也就到这个边界了。区间和1 + 区间和2 < 0 同时 区间和2>0,只能说明区间和1 < 0, 那么就会从假设的箭头初就开始从新选择其实位置了。所以一样的套路,先排序,让所有的相邻区间尽可能的重叠在一起,按左边界,或者右边界排序都可以,处理逻辑稍有不同。原创 2023-09-01 17:40:33 · 220 阅读 · 0 评论 -
算法通关村第十七关——贪心其实很简单(青铜)
贪心的本质是选择每一阶段的局部最优,从而达到全局最优。那贪心是否一定能得到最优解呢?《算法导论》给出了最明确的答案——贪心算法不能保证一定能得到最优解,但是对很多问题确实可以得到最优解。既然不能保证 ,我怎么知道某个解法是不是最优解呢?很遗憾,笔者查阅大量材料,也没有谁给出定论,大部分的解释其实就是——看上去是就是了。那我怎么知道什么时候该用贪心呢?这要求要解决的问题具有”最优子结构“,那什么是”最优子结构“呢?这个问题好比用高等数学证明”1+1=2“,解释不如不解释。原创 2023-09-01 14:50:40 · 129 阅读 · 0 评论 -
算法通关村第十六关——滑动窗口经典问题(白银)
本题因为字符串s1的异位词长度一定是和s2字符串的长度一样的,所以很自然的想到可以以s1.length()为大小截图一个固定窗口,然后窗口一边向右移动,一边比较就行了。本题看似复杂,但其实简单的很。不过这样写之后有多余的计算,在while循环里面,一个个移动,那么怎样一次性直接将left移动到位置,也就是重复值的位置,的下一个位置。我们用了key,value的数据结构,所以可以存key的时候,设置value为当前的位置,这样移动就可以直接找到位置。没看清题目,原来是找至多包含。,是不同字符,不是数量,靠!原创 2023-08-31 16:43:12 · 141 阅读 · 0 评论 -
算法通关村第十六关——滑动窗口其实很简单(青铜)
总结起来,滑动窗口是一种通过移动窗口的边界来寻找满足条件的子串或子数组的算法技巧。它能够在O(n)的时间复杂度内解决一些字符串或数组相关的问题,具有较高的效率和性能。原创 2023-08-31 12:47:56 · 242 阅读 · 0 评论 -
算法通关村第十五关——用4kb内存寻找重复元素(青铜)
分析:本身是一道海量数据问题的热身题,如果去掉“只有4KB”的要求,我们可以先创建一个大小为N的数组,然后将这些数据放进来,但是这里数组最大为32KB,而题目有4KB的内存限制,我们就必须先确定该如何存放这个数组。例如一个40亿的整数数组,如果用整数存储需要16GB左右的空间,而如果使用位存储,就可以用2GB的空间,这样很多问题就能够解决了。题目要求:给定一个数组,包含从1到N的整数,N最大为32000,数组可能还有重复值,且N的取值不定,若只有4KB的内存可用,该如何打印数组中所有重复元素。原创 2023-08-30 18:03:08 · 150 阅读 · 0 评论 -
算法通关村第十五关——海量数据场景下的热门算法题(白银)
解决办法是把包含 20 亿个数的大文件用哈希函数分成 16 个小文件,根据哈希函数的性质,同一种数不可能被散列到不同的小文件上,同时每个小文件中不同的数一定不会大于 2 亿种, 假设哈希函数足够优秀。假设用哈希表来保存出现过的数,如果 40 亿个数都不同,则哈希表的记录数为 40 亿条,存一个 32 位整数需要 4B,所以最差情况下需要 40 亿*4B=160 亿字节,大约需要16GB 的空间,这是不符合要求的。就是遍历这 40 亿个无符号数,遇到所有的数时,就把 bitArr 相应位置的值设置为 1。原创 2023-08-30 18:01:38 · 216 阅读 · 0 评论 -
算法通关村第十四关——堆高效解决的经典问题(白银)
Java PriorityQueue 实现了 Queue 接口,不允许放入 null 元素;其通过堆实现,具体说是通过完全二叉树(complete binary tree)实现的小顶堆(任意一个非叶子节点的权值,都不大于其左右子节点的权值),也就意味着可以通过数组来作为PriorityQueue 的底层实现,数组初始大小为11;也可以用一棵完全二叉树表示。原创 2023-08-30 15:26:04 · 136 阅读 · 1 评论 -
算法通关村第十四关——堆结构(青铜)
"向上调整"方法比较新元素与其父节点的大小,如果新元素大于父节点,则交换它们的位置,并继续向上比较,直到满足大顶堆的条件。即每次调整都是从父节点、左孩子节点、右孩子节点三者中选择最大者跟父节点进行交换(交换之后可能造成被交换的孩子节点不满足堆的性质,因此每次交换之后要重新对被交换的孩子节点进行调整)。所以说,优先队列和堆不是一个同level的概念 ,但是java的PriorityQueue就是堆实现的,因此在java领域可以认为堆就是优先级队列,优先级队列就是堆,换做其他场景则不行。原创 2023-08-28 16:45:53 · 107 阅读 · 0 评论 -
算法通关村第十三关——数字与数学高频问题(白银)
然后还有一些特殊情况就是当出现 999999、999999999 之类的数字时,循环到最后也需要进位,出现这种情况时需要手动将它进一位。所以只需要判断有没有进位并模拟出它的进位方式,如十位数加 111 个位数置为 000,如此循环直到判断没有再进位就退出循环返回结果。通过不断除以2,直到n变成1或者不再能被2整除,然后检查最终的n是否等于1。这道题主要的难点是9+1的进位,其他地方跟上面那个方式有点点像。这题跟上一题一样,也就一个9+1,一个是1+1。上面是求2的幂,那么可以求m的幂。原创 2023-08-25 15:44:16 · 128 阅读 · 0 评论 -
算法通关村第十三关——数字与数学基础问题(青铜)
第二个想法是将数字本身反转,然后将反转后的数字与原始数字进行比较,如果它们是相同的,那么这个数字就是回文。例如,输入 1221,我们可以将数字 “1221” 的后半部分从 “21” 反转为 “12”,并将其与前半部分 “12” 进行比较,因为二者相同,我们得知数字 1221 是回文。以12345为例,先拿到5,再拿到4,之后是3,2,1,我们按这样的顺序就可以反向拼接处一个数字了,也就能达到 反转 的效果。由于每一个零都是由2和5相乘得到的,所以要计算末尾的零的个数,只需要计算n!中有多少个因子5即可。原创 2023-08-25 15:43:33 · 279 阅读 · 0 评论 -
算法通关村第十二关——字符串冲刺题(黄金)
从根节点开始,循环执行以下操作:统计子节点数量count和最后一个非空子节点的索引index。否则,将当前节点的索引对应的字符追加到prefix中,并将当前节点指向最后一个非空子节点。在插入操作insert中,通过遍历单词的每一个字符,将字符映射到对应的索引,并判断该索引对应的子节点是否为空。如果为空,则创建一个新的子节点。最后,在单词的最后一个字符的位置上,将isEnd置为true,表示该节点是一个单词的结尾。这段代码的时间复杂度为O(nm),其中n是strs数组的长度,m是所有字符串的平均长度。原创 2023-08-23 15:27:27 · 181 阅读 · 0 评论 -
算法通关村第十二关——字符串经典基础面试题(白银)
想一下,我们将整个字符串都反转过来,那么单词的顺序指定是倒序了,只不过单词本身也倒序了,那么再把单词反转一下,单词不就正过来了。否则,即 i + k >= n,说明当前子字符串的长度超过等于 k,应该只取到 n - 1 作为结束位置,以保证不越界。如果 i + k 的值小于 n,则说明当前子字符串的长度不足 k,可以直接取 i + k 作为结束位置。这题不难,也就是先把string的大写变成小写,保留数字,其他的去掉,然后再进行判断。如果两个字符串是字母异位词,那么它们排序后的结果应该是相同的。原创 2023-08-23 13:51:36 · 135 阅读 · 0 评论 -
算法通关村第十二关——字符串:隐形的王者(青铜)
字符串遍历与操作:包括对字符串的遍历、字符替换、字符删除、字符插入等基本操作。字符串匹配与查找:包括子串匹配、正则表达式匹配、模式匹配等相关算法。字符串排序与比较:包括字符串的字典排序、按特定规则排序、字符串比较等相关算法。字符串翻转与反转:包括字符串的翻转、单词反转等相关算法。字符串拆分与连接:包括字符串的拆分、连接、格式化等相关算法。字符串判定与验证:包括字符串的长度判断、是否包含特定字符、是否为回文串等相关算法。字符串压缩与解压:包括字符串的压缩、解压缩等相关算法。原创 2023-08-23 13:50:37 · 162 阅读 · 0 评论 -
算法通关村第十一关——位运算的高频算法题(白银)
首先,求得A和B的最小值和最大值,对其中的最小值当做乘数(为什么选最小值,因为选最小值当乘数,可以算的少),将其拆分成2的幂的和,即min = a_0 * 2^0 + a_1 * 2^1 + …它的基本思想是将原问题拆解成若干个子问题,先求解子问题的最优解,然后根据子问题的最优解推导出原问题的最优解。首先我们可以根据题目要求直接计算,题目给定的 n 是 32 位二进制表示下的一个整数,计算位 1 的个数的最简单的方法是遍历 n 的二进制表示的每一位,判断每一位是否为 1,同时进行计数。原创 2023-08-21 14:28:38 · 154 阅读 · 0 评论 -
算法通关村第十一关——理解位运算的规则(青铜)
对于 0 和正数,上述说法是成立的,整数除法是向 0 取整,右移运算是向下取整,也是向 0 取整。例如,(−50)>>2 的结果是 −13,而 (−50)/4 的结果是 −12,两者是不相等的。异或运算的符号是 ⊕(在代码中用∧ 表示异或),运算规则是:对于每个二进制位,当两个数对应的位相同时,结果为 0,否则结果为 1。注意,我们得到了一个9位的结果,超出了原来的8位范围,这是溢出的结果。与运算的符号是 &,运算规则是:对于每个二进制位,当两个数对应的位都为 1 时,结果才为 1,否则结果为 0。原创 2023-08-21 14:27:41 · 142 阅读 · 0 评论 -
算法通关村第10关——归并排序(黄金)
比如上图中的最后一次合并,要将[4,5,7,8]和[1,2,3,6]两个已经有序的子序列,合并为最终序列[1,2,3,4,5,6,7,8],这个操作与合并两个有序数组的完全一样,不同的是这里是将数组的两个部分合并。具体做法是通过计算起始位置和结束位置的中间值,将数组分为两部分,左半部分的起始位置为start,结束位置为middle,右半部分的起始位置为middle+1,结束位置为end。最后,将临时数组中的元素复制回原数组中,从起始位置到结束位置,完成排序。最终,得到了一个有序的数组。原创 2023-08-18 14:09:12 · 73 阅读 · 0 评论 -
算法通关村第10关——数组中第k大的数字(白银)
因为在上一次循环结束后,right指针指向的是小于等于基准值的最右边元素,所以需要对左半部分进行递归排序,即。而left指针指向的是大于等于基准值的最左边元素,所以需要对右半部分进行递归排序,即。这道题的题目就多了个k,其实就是快速排序后取倒是第k个。原创 2023-08-18 11:59:23 · 114 阅读 · 1 评论 -
算法通关村第10关——快速排序并不难(青铜)
什么是快速排序?快速排序是一种常用的排序算法,也是基于比较的排序算法。它通过分治的思想将一个大问题转化为多个小问题来解决。实现快速排序的核心思想是选取一个基准元素(通常选取第一个元素),将数组分成两部分,一部分是小于基准元素的,另一部分是大于基准元素的。然后对这两部分分别进行递归快速排序,最终得到有序的结果。选取基准元素。将数组中小于基准元素的元素移到基准元素左边,大于基准元素的元素移到基准元素右边。对基准元素左边和右边的子数组分别进行递归快速排序。快速排序适合解决需要排序的问题。原创 2023-08-18 11:58:25 · 209 阅读 · 1 评论 -
算法通关村第9关——二分查找与搜索树高频问题(白银)
O(1) - 常数时间复杂度:不论输入规模的大小,算法都能在常数时间内完成操作。例如,访问数组中的一个元素或插入/删除链表的头节点。常数时间复杂度通常与简单的操作或直接访问数据结构中的元素相关。这种类型的算法题较少,常见的包括基本的数组或链表操作,如访问数组元素、插入/删除链表的头节点等。O(log(n)) - 对数时间复杂度:算法的执行时间随着输入规模的增长而增长,但以对数的速度增长。例如,二分查找算法。对数时间复杂度通常与分治思想相关,通过每次减小问题规模的一半来进行快速搜索或排序。原创 2023-08-18 11:57:14 · 285 阅读 · 1 评论 -
算法通关村第9关——逢试必考的二分查找(青铜)
查找算法是一类常见的算法问题,其特点是根据给定的条件在集合中寻找指定的元素或者确定元素是否存在。搜索空间:查找算法通常在一个有序的数据集合或者搜索空间中进行查找操作。搜索目标:查找算法的目标是找到满足特定条件的元素,或者确定指定元素的存在与否。时间复杂度:不同的查找算法具有不同的时间复杂度,影响着算法的执行效率。线性查找:从集合的第一个元素开始逐个遍历,直到找到目标元素或者遍历完整个集合。二分查找:在有序数组或有序列表。原创 2023-08-16 10:44:20 · 149 阅读 · 2 评论 -
算法通关村第8关——二叉树的深度和高度问题(白银)
很显然相对于node(20),最大深度自然是左右子结点+1,左右子节点有的可能为空,只要有一个,树的最大高度就是1+1=2,用代码表示就是:int depth = 1 + max(leftDepth, rightDepth);然后我使用gpt帮忙优化一下,但是时间会比较长,应该是数据达到一定的量的时候,会更好,下面直接贴出代码,主要是使用一个缓存Map来保存已经计算过的节点高度,避免重复计算。这道题跟上一题的差别就是多一个判断,如何判断return回去的高度做比较,如果为0,OK,为-1,高度不对。原创 2023-08-15 11:58:35 · 123 阅读 · 0 评论 -
算法通关村第8关——二叉树的经典算法题(青铜)
不难发现这满足递归的性质,若当前节点就是叶子节点,那么我们直接判断 sum 是否等于 val 即可 (因为路径和已经确定,就是当前节点的值,我们只需要判断该路径和是否满足条件)。本题询问是否存在从当前节点root 到叶子节点的路径,满足其路径和为 sum,假定从根节点到当前节点的值之和为 val,我们可以将这个大问题转化为一个小问题: 是否存在从当前节点的子节点到叶子的路径满足其路径和为 sum - val。其实这一题就是上一题的变式,过程大差不差,需要理解一个地方,就是比较的时候,比较哪个部分。原创 2023-08-11 14:59:45 · 349 阅读 · 2 评论 -
算法通关村第七关——理解二叉树的遍历(白银)
首先我们应该创建一个 Stack 用来存放节点,首先我们想要打印根节点的数据,此时 Stack 里面的内容为空,所以我们优先将头结点加入 Stack,然后打印。之后我们应该先打印左子树,然后右子树。所以先加入 Stack 的就是右子树,然后左子树。统一迭代的方式,让前中后序三种遍历方式都一样,能够统一风格。这个算法的时间复杂度是O(n),其中n是二叉树的节点数。后序遍历就是前序遍历的翻转。原创 2023-08-10 11:17:49 · 164 阅读 · 1 评论 -
算法通关村第七关——一篇理解递归(青铜)
在这个例子中,我们调用factorial(5),首先判断基本情况,由于n不等于0或1,所以将问题转化为计算factorial(4)的结果。通过以上步骤,我们可以看到递归函数的调用过程,每次调用都在问题规模上做了缩小,直到满足递归结束条件为止。首先,我们来了解什么是递归。在例子中,当n为0或1时,递归结束,直接返回n。在这个例子中,我们可以定义一个名为factorial的函数,它接受一个整数n作为参数,并返回n的阶乘。这个递归算法通过不断调用自身,将求解问题的规模从n缩小到n-1,直到达到递归结束条件为止。原创 2023-08-08 10:50:02 · 124 阅读 · 1 评论 -
算法通关村第六关——二叉树的层次遍历经典问题(白银)
如果当前层级超过了结果列表的大小,我们会在结果列表中添加一个新的空列表,用于存储当前层级的节点值。其实跟上面那题一样,我们只需要在添加进list的时候,添加到最前面即可,可以使用list.add(index,val)的方法,在索引为0的位置添加对应的值。这里找到最左的节点,也就是最下面那一层,遍历的时候,第一次遍历的第一个结点,那么也就是内嵌循环的第一次就是最左节点。最终,函数返回时,我们得到了一个按层级分组的节点值列表,即N叉树的层次遍历结果。在每次遍历的过程中,通过不断取出队列中的节点,并更新。原创 2023-08-07 14:00:16 · 227 阅读 · 1 评论 -
算法通关村第六关——理解树的结构(青铜)
定义二叉树定义树的原理与前面讲的链表本质上是一样的,只不过多了一个指针,如果是二叉树,只要在链表的定义上增加一个指针就可以了// 节点的数据 private BinaryTreeNode leftChild;// 左子节点 private BinaryTreeNode rightChild;// 右子节点 }本质上就是有两个引用,分别指向两个位置,为了便于理解,我们分别命名为左孩子和右孩子。如果是N叉树该如何定义呢?原创 2023-08-01 13:35:35 · 142 阅读 · 1 评论 -
算法通关村第五关——队栈和Hash的经典算法(白银)
在使用单个栈实现队列时,入队操作只需要将元素压入栈即可,但出队操作需要将栈底的元素作为出队元素,这涉及到将栈中的元素逐个弹出并重新压入栈中的过程,时间复杂度为 O(n)。这是因为排序算法的时间复杂度为 O(nlogn),而寻找满足条件的解的过程为双指针法,时间复杂度为 O(n)。获取队头元素操作(peek)与出队操作类似,也需要先判断 outStack 栈是否为空,若为空则将 inStack 栈中的元素转移到 outStack 栈,然后取出 outStack 栈顶元素作为队头元素。,请你在该数组中找出。原创 2023-07-31 14:55:30 · 301 阅读 · 1 评论 -
算法通关村第五关——队列和Hash的特征(青铜)
hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间。它其实就是一个算法,最简单的算法就是加减乘除,比方,我设计个数字算法,输入+7=输出,比如我输入1,输出为8;输入2,输出为9。哈希算法不过是一个更为复杂的运算,它的输入可以是字符串,可以是数据,可以是任何文件,经过哈希运算后,变成一个固定长度的输出,该输出就是哈希值。原创 2023-07-31 11:13:08 · 429 阅读 · 1 评论 -
算法通过村第四关——栈的经典算法问题(白银)
辅助栈是在解决某个问题或优化某个算法时使用的一个额外的数据结构。它通常用于存储一些中间结果或辅助信息,以方便实现某些操作或减少时间复杂度。辅助栈经常用在需要快速获取一些中间结果或辅助信息的算法题中。最小栈/最大栈:需要在常数时间内获取栈中的最小/最大元素。括号匹配:需要判断给定字符串中的括号是否匹配。辅助栈可以用来存储左括号,检查右括号时与栈顶元素进行匹配。表达式求值:需要对给定的数学表达式进行求值。辅助栈可以用来存储运算符和操作数,在遍历表达式时进行相应的计算。原创 2023-07-28 12:12:29 · 273 阅读 · 1 评论 -
算法通关村第四关——理解栈手写栈(青铜)
一般而言,把允许操作的一端称为栈顶(Top),不可操作的一端称为栈底Bottom),同时把插入元素的操作称为入栈(Push),删除元素的操作称为出(Pop)。当栈的容量不够时,使用Arrays.copyOf()方法创建一个新的数组,并将原数组中的元素复制到新数组中,扩容后的容量为原来的两倍。peek()方法用于获取栈顶元素,我们首先判断链表是否为空,如果不为空,则使用getFirst()方法返回链表的第一个元素,即栈顶元素;采用顺序表实现的的栈,内部以数组为基础,实现对元素的存取操作。原创 2023-07-27 11:14:37 · 211 阅读 · 1 评论 -
算法通关村第三关——双指针思想以及应用(白银)
该方法的时间复杂度为 O(n^2),其中 n 是数组的长度。类似于龟兔赛跑,两个链表上的指针从同一节点出发,其中一个指针前进速度是另一个指针的两倍。该算法的时间复杂度为 O(n),其中 n 是数组的长度。时间复杂度是 O(n),其中 n 是数组的长度。在我们遇到像数组,链表这类数据结构的算法题目的时候,应该要想得到双指针的套路来解决问题。所以,需要首先排除左指针为偶数情况,如果为偶数就往右移动,直到为奇数,才有交换的资格。这道题是上道题的变式,依然是使用双指针,但问题是,允许两个的重复元素。原创 2023-07-25 12:18:56 · 213 阅读 · 1 评论 -
算法通关村第三关——爱不起的数组与双指针思想(青铜)
数组与双指针的算法故事~~原创 2023-07-24 15:42:50 · 109 阅读 · 0 评论 -
算法通关村第二关——链表反转笔记(白银挑战)
反转两个数区间的结点。原创 2023-07-21 10:17:23 · 275 阅读 · 1 评论 -
算法通关村第二关——链表反转笔记(青铜挑战)
链表反转实现的详细过程,通过图与代码结合说明,本次包括递归的实现三要素结合代码和图详细的讲解原创 2023-07-20 10:33:21 · 305 阅读 · 1 评论 -
算法通关村第一关——链表笔记(白银挑战)
学完就解决了绝大部分情况下的链表双指针问题啦!!原创 2023-07-19 12:21:03 · 514 阅读 · 0 评论 -
算法通关村第一关——链表笔记(青铜挑战)
定义一个Node类来表示单链表中的节点,包含数据域和指针域。// 数据域 public int data;// 指针域 public Node next;} }在LinkedList类中定义一个头结点head,以及链表的大小size。这里按道理应该用private,然后get,set方法的,偷懒了Node head;int size;} }然后我们可以创建一个test类,用来测试一下这个LinkedList,输出一下。原创 2023-07-18 13:51:50 · 579 阅读 · 1 评论