自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 问答 (2)
  • 收藏
  • 关注

原创 Manacher算法

Manacher并不只是用于求最大回文串,最精华的部分在于经过这个算法处理出来的rad数组;可以将rad数组每个元素-1,就是每个位置的回文串长度,这对于解决某些难题非常有用。具体的,可以在力扣搜索`回文`关键词,有一些题目就可以利用这个数组做极大的复杂度优化。...

2022-07-25 00:30:24 340 1

原创 蓄水池抽样:动态等概率抽样

昨天学习了一个比较有意思的也比较简单的算法,记录一下不知道总样本为多少, 而且由于内存不足,不能把样本全部读进来;现在想一个办法,从中随机等概率获取其中一个样本输出【或者也可以:对于当前已经遍历过的样本,从中等概率的得到一个样本】经典算法:将所有的遍历样本存入到一个集合中,每次遍历对集合元素随机取值。我们需要考虑一种空间复杂度足够低的方法,一种有效的方法就是蓄水池抽样。设定两个量:1)res,存储当前抽样结果;2)i:当前遍历的样本数量【从1开始】对于要求1,我们可以在每轮替换后输出一次,就相当于获取

2022-06-10 23:28:00 263

原创 线段树:学会这个就会陷入什么题都是线段树的怪圈?但是它确实够顶啊!

以前学过一次线段树,但是因为间隔时间太长,当时又没怎么实现,现在重新学了一遍。我是跟着左神一期关于线段树入门的课程写的,代码也有很深的他的影子,他的课程地址在B站这个链接.如果一时不明白可以看他的视频,但是他画的图有点问题,会带给我们错误的线段树认识,但是当做入门还是很好的。线段树主要解决这样一类问题:一个数组,或者一个有限的数轴,对其内某一段区间反复进行修改和查询。若只做查询,前缀和最方便;若反复修改而查询只有一次,选用差分最方便;若只是单纯的修改和求区间和,树状数组最方便。但是,它们都没有线段树的普适性

2022-06-10 21:15:10 268

原创 数位DP:我的理解与模板【java实现】

数位DP前言这个星期研究了好几天的数位DP问题,已经摸到一点门路了,所以写篇笔记记录一下,用于之后的复习。我的做法完全参考自y总的思路和代码,只不过采用java实现,第二节的例题也是,第三节使用leetcode几道原题。另外还参考了这位大佬的博客,大家也可以去看看,题目比我的更全。y总的课性价比超高,以后有票了买一波课回去研究研究。这里只列了他讲的比较简单的几题,力扣的题目就更简单了(虽然标签都是hard…),若想深入研究可以去听课。PS: 数位dp难度较高(基本上入门题在力扣都是hard),

2022-05-08 09:30:26 973 1

原创 图的邻接表存储方式:链式前向星

图的邻接表存储方式:链式前向星注:图片和资料主要参考至这位这位大佬的博客1. 邻接表图最常见的两种存储方式是邻接表和邻接矩阵。邻接表存储方式适合存储边稀疏的图,有多少边就使用多少空间,比较节省空间,但是判断两点之间是否有边不方便;【某些时候,若只遍历存在的边,其实复杂度相较于遍历二维矩阵更低】邻接矩阵适合存储边稠密的,固定的O(N*N)[N为顶点数量]的空间复杂度,若边稀疏很浪费空间,但是判断边和权值都很方便。邻接表的逻辑结构:主要有两个部分组成:1)顶点数组;2)顶点所邻的边形成的链

2022-03-19 14:29:07 1058

原创 从字符串模式匹配到有穷自动机

前言字符串问题往往具有复杂的条件判断和特殊情况,可谓是面向用例编程的典范。有穷自动机【DFA】正是针对这类问题的好手。据说,字符串正则匹配的底层就是使用的DFA实现。今天,让我们从正则匹配开始,推导一个简单的DFA实现。总纲直接切题,给出网上说的字符串DFA的实现步骤:1)根据字符串的特征,构造模式匹配串;2)根据模式匹配串提炼DFA状态转化图;3)根据状态转化图编写字典,总结状态转换关系,在某个时刻无法得到下个有效状态时匹配失败;直到一个合法出站点时匹配成功。例子: 表示数值的字符串

2022-03-15 16:57:16 578

原创 二分类问题套路

二分查找套路二分查找套路套路总纲题目lc69 sqrt()lc1011lc410 410. 分割数组的最大值LCP 12. 小张刷题计划总结二分查找套路好久没水文了,今天来水一篇。。。最近练成了二分查找的套路,来吹一波套路总纲知道此题适不适合二分1)目标在一个连续有界区间内(即使是0~MAX,这个基本都能达到);2)单调问题:问题会告诉你需要满足某个条件,比如最多多少天完成(设为d),而让你求最少的目标(设为x),那么d的取值f(x)必须是一个单调函数,才能使用二分去除一半的解空间;找到此

2021-11-20 13:50:55 738

原创 前缀树算法实现敏感词过滤

文章目录基于前缀树的敏感词过滤基于前缀树的敏感词过滤知识点:@PostConstruct有点像静态代码块的作用,在方法构造完成后放出字符。resource下的文件会被加载到类路径下,通过class.getClasssLoader().getResrouceAsStream()可读取跳过特殊字符的匹配算法。@Component@Slf4jpublic class SensitiveFilter { private TireNode root = new TireNode(..

2021-09-17 21:27:32 162

原创 算法-查找一堆出现次数为偶数次数中唯二的两个奇数次数

//查找一堆出现次数为偶数中的唯一的奇数次数func findOddNum(nums []int) int { var res int = 0 for i := 0; i < len(nums); i++ { res ^= nums[i] } return res}//查找一堆出现次数为偶数次数中唯二的两个奇数次数/* 1. 首先将所有数异或得到这两个奇数的异或ans 2. 找到ans的一个为1的位置,设这位为1其余为0的二进制为s 3. 标记两个数res1与res2,将.

2021-05-12 11:06:27 177 1

原创 算法-使用randn()实现randm()的套路

如何利用一个randn()【表示得到从1到n的随机数】改造为一个randm()的函数?rand()函数要求的是每个位置出现等概率。首先会想到使用 乘 + if判断的解法,以rand3实现rand7为例:while(true) { int s = rand3() * 3 - 2; //因为原数至少为2,所以不满足条件,需要减掉2 return s;}乍一看,确实只会返回1到7的整数,但是假设原来rand3()获取每个位置的概率是1/3,这现在获取1的概率必须要三次都取得1,即(1

2021-04-01 22:37:12 865

原创 算法-Trie Tree

一、例题题目都已经明目张胆的提醒我们使用Trie树了,然而我并不会,暴力法失败。。。直接看题解二、Trie树Trie树是一种变种多叉树。普通的多叉树的数据结构: class MTreeNode { Type val; MTreeNode[] nexts; }// nexts表示下一层级树的节点集合,通过数组的每个位置的指针指向每个下一层的节点。Trie树的数据结构:class TrieNode { boolean isEnd; //标

2021-03-31 21:32:40 104

原创 拓扑排序

一、例题这是一道典型的拓扑排序题:拓扑关系是,只有前导课程学习完毕,才能学习后序课程。二、拓扑排序先了解一些必要的概念:图的度图的度是指图中元素所连接的节点数量。在有向图中,分为入度和出度;入度:指向当前结点的所有结点数量;出度:当前结点指向的结点数量如上图,0的入度为0,出度为1有向无环图不管按照怎样的路径,都最终会到达一个终点(不一定是同一个终点),而不会前进一定的步数还能回到前遍历过得节点的图。上图就是一个有向无环图拓扑排序将一

2021-03-31 16:58:24 254 1

原创 并查集与力扣128

并查集应用:两个集合(图)之间的连通性场景:两类元素,属于不同的集合,彼此之间不清楚自己所属的集合并查集漫画设计方式:每个集合各自的元素都使用类似指针的方式连通在一起;并查集类UnionFind维护一个parent[]数组,记录自己上一个元素的位置,即parent[i] = last;根节点的parent[i] == i,即自己这样判别两个元素是否在一个集合,只需要***找到各自的根节点是否相同即可***代码实现【以最简单的int哈希表为例】: class U

2021-03-27 14:22:37 201

原创 leetcode72-编辑距离

class Solution { // 状态定义:f[i][j] 表示将word1的前i个字符转化为word2的前j个字符需要的步骤数量【长短任意,因为最终计算的是增删改最大值】 // 因为存在空串的可能,因此i,j需要从0到n, 即长宽长度需要增加一 // // 初始化:当两者至少有一个为空时(f[i][0]或者f[0][j]), 其值等于另一个当前子串的长度 // f[i][0] = i; f[0][j] = j; // // 状态转移:【考虑匹配到i比对j的时候,分为两大类】 /.

2021-03-17 10:49:22 101

原创 REDIS五种数据结构

基础数据结构string实现:SDS(Simple Dynamic String) 简单动态字符串结构:int len; 字符串长度int free; 空闲长度char[] buf 存储字符串的字符数组,采取c语言风格。buf特点:采用c语言存储字符串的风格,在字符数组后多开辟一个字节空间,用来存储空字符串\0, 表示结束符【原本拥有free和len的他是不需要的,但是为了统一还是设了]好处是可以直接使用c语言关于字符串的函数。采用SDS的优点:o(1)时间获取长度,而无需遍历

2021-03-12 16:54:42 275

原创 算法-由岛屿问题引出网格dfs通用解法

文章目录问题一、从二叉树到网格二、本题思路问题一、从二叉树到网格网格实际上是一类特殊的图【简化版】,如果没有技巧很啰嗦二叉树dfs解题模板:void dfs(TreeNode root) { if (root == null) return; dfs(root.left); dfs(root.right);}算法主体分为两个部分:(1)baseline:即root == null(2)访问邻接点:二叉树的邻接点很简单,就是左右子树,且子树不存在循环引用,..

2021-03-12 12:43:07 148

原创 算法-一个经典算法题搞清楚dfs和bfs、不可变类、回溯、剪枝等概念

文章目录题目一、深度优先遍历与回溯剪枝第一版:第二版:第三版:二、广度优先遍历与自定义结点类第一版:第二版:总结题目这类序列排列类的题目往往通过深度优先遍历解决,因为本质上是对一个树进行搜索,并在结果集添加所有可行解。在中间不符合题意的解中提前结束,避免无谓的损耗,称为剪枝。而在一个分支中的修改可能会影响其他分支解,需要进行擦除修改,称为回溯。这题不仅可以深度优先,也可以广度优先,来趁此感受一下dfs与bfs的区别.并且,由于涉及到String的操作,说明一下不可变类与String的内存..

2021-03-04 15:23:49 251 1

原创 剑指 - 滑动窗口两道题目

文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言本题是滑动窗口最经典的题目。滑动窗口分为固定与变长,这题属于固定窗口。最佳解题方法是双端队列法。本题还可以顺便练习以下双端队列Deque的API【以前我一直以为只有LinkedList才有队列,原来还有一个接口】一、pandas是什么?维护一个双端队列,保证输入元素的单调递减。每次插入一个元素,将最左元素二、使用步骤1.引入库代码如下(示例):import numpy as npimport pan

2021-02-21 15:12:18 66 1

原创 java并发-基础

文章目录前言一、操作系统相关1. 进程与线程2. 上下文切换前言开启java并发包的学习。一、操作系统相关1. 进程与线程进程是活动的程序。进程是在内存中为程序开辟的活动空间,是在运行中的程序。除了程序本身,进程还拥有各种控制信息。在早期单道批处理系统中,没有进程的概念,程序只能一个接着一个顺序执行。而IO操作往往耗费大量的时间,若是一个程序为了等待IO而中断等待,效率极低。为了解决这个问题,提出了多道批处理系统,系统中可以同时运行多道任务,但是这样资源分配调度就很混乱,为了更好地进行分

2021-02-19 18:48:06 110

原创 剑指51-逆序对数【归并排序】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录题目二、归并排序法题目一道相当没有牌面的困难题。。。第一时间想到动态规划,测了几个案例通过,心想:好嘛,爷困难题的一血要有了。但是一提交,居然超时了。错误我都能理解,超时我确实无法理解,我第一次见到动态规划这个无往不利的都能超时,难道我的算法有问题?估算了以下,大约(1 + 2 + 3 + … + (n - 1))= O(n^2),看了一下超时的数组,长度得有几千吧,难怪超时了。二、归并排序法看到题解中说要用归并排

2021-02-19 18:38:01 87

原创 Mysql体系概览

文章目录前言一、MySql概述二、MySql体系架构三、几个部分在执行中的作用1.连接器2. 查询缓存3. 分析器4. 优化器5. 执行器四、日志模块1. redo log2. binlog前言这个专栏是我看极客的mysql45讲的笔记。一、MySql概述现在的主流数据库主要分为两大类:(1)关系型数据库;(2)NoSql数据库MySql是关系型数据库的代表。下图是MySql现在的主流的几个分支:以下是MySQL的优点:二、MySql体系架构按照功能,主要将MySQL系统..

2021-02-19 08:29:18 130 1

原创 剑指55-平衡二叉树

文章目录前言一、解法一:双递归二、高效解法:后序剪枝总结前言一道简单题,连错五六遍。。。重点是把二叉树这种双递归的解题模板记住,记得有个二叉树简单题也是这样双递归,错了很多遍就是主递归的返回逻辑一直搞不清楚,还是太笨了。。。一、解法一:双递归制造一个计算树节点的高度的方法depth();【此为第一个递归方法】主递归方法isBanlance():若节点为空,返回true若左右子树绝对值 <= 1, 此为正确的第一个条件【不知道我设不符合就错是不是对的】返回左右子树调用主递归的与

2021-02-18 18:57:16 85

原创 java集合-ConcurrentHashMap【jdk1.8】

文章目录前言一、数据结构1. Node2. Segment3. TreeNode4. TreeBin构造方法二、put() 和 putVal()1. putVal()2. initTable()3. putTreeVal()4. addCount() 开启扩容方法5. helpTransfer()协助扩容方法前言1.8的ConcurrentHashMap相比于1.7可以说发生了相当大的变化,虽然添加了红黑树的数据结构,但是整个table的数据结构确实完全简化了。另外加锁的实现也再不像DougLea

2021-02-18 14:10:46 181

原创 剑指-56 找出不重复的数组元素

文章目录前言一、题目描述二、异或性质三、O(n)解法:与出不同四、O(nlogn)解法:二分法五、“只有1个数字只出现1次,剩下出现n次”地通用解法前言今天又做了一道经典的题目[看了一道经典的题解],忍不住记录一波Get点:(1)为了反正整形溢出,求二分时使用 (high + (low - high) ) >>> 1;(2)求从右到左第一个不为0的数位 int t = 1; whie(t != 0){ if ((t & n) == 1) return t; t &..

2021-02-17 16:56:59 208

原创 java集合-HashMap1.8

文章目录前言一、红黑树1.1 插入规则二、HashMap关于红黑树方法2.1 TreeNode内部方法1. balanceInsertion()2. retateLeft()3. retateRight()三、Map类的方法1. hash()2. put() & putVal()3. treeifyBin() & treeify()前言众所周知,jdk8的HashMap的链表会在一定长度转换为红黑树,且很多方法也与1.7有了很大变化。一、红黑树规则:根节点为黑;叶子结点为黑

2021-02-17 13:28:36 120

原创 剑指43-整数n中数字1出现的个数

文章目录题目描述一、找规律二、代码题目描述输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。一道看上去很简单的题目,我的暴力解法毫无意外的超时了,没法子,只能看题解了,好家伙,看了半个小时才弄懂。数学规律题目真心是最难的:没看过肯定写不来,看过了也不一定记得住规律。。。一、找规律规律1:在1~10中,他们的个位数上出现1的次数为1;在11~100中,他们十位数出现1的个数为10;

2021-02-16 17:37:30 83

原创 并发-CAS

文章目录前言一、案例二、正常的同步三、模拟cas四、JDK的cas api前言CAS【Compare And Swap,乐观锁】是JUC的基础,学习CAS的原理以及使用。一、案例多线程环境下的失败案例:模拟100个用户同时访问网站10次:public class Demo1 { static int count = 0; /** * 模拟用户访问服务器 */ public static void request() { try {

2021-02-15 22:34:31 90 1

原创 剑指41-求数组中位数

文章目录题目描述题解题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-ju-liu-zhong-de-zhong-wei-shu-lcof著作权归领

2021-02-15 18:27:56 151

原创 剑指29-第n个丑数

文章目录一、题目描述二、动态规划一、题目描述我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。1是丑数。n不超过1690。最开始的想法是一个一个试,果不其然超时了。之后想到使用HashSet记录已经验证的数,能不能整除为2, 3,5,还是会超时。顿时想到可以利用动态规划,可是却无法着手。看了题解,

2021-02-14 17:46:12 76

原创 算法-排列问题【回溯、交换元素】

文章目录前言一、剑指offer-38:字符的全排列问题二、LeetCode-51:八皇后问题后话前言全排列问题大部分都是一个模板的。以前一直以为是通过一层递归一次添加一个元素这样,但是写起来没有位置互换这样方便,要考虑的情况也太多。记录一下这种调换式的解题模板一、剑指offer-38:字符的全排列问题题目描述:输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = “abc”输出:[“abc”,“acb”,“bac

2021-02-09 16:48:07 220

原创 java语法-int[]与List<Integer>之间的转化

通过Arrays可以完成Integer[]与List<Integer>之间的转化List<Integer> list = Arrays.asList(Intreger[] ints)Integer[] ints = Arrays.toArray(List\<Integer> list)这种方式较为简洁,但是必须要把int[]变成Integer[]若是String这样的引用类用起来比较适合通过stream()可以完成int[]与List<Integer

2021-02-09 14:39:11 738 1

原创 JVM-垃圾回收器

文章目录一、垃圾回收器分类二、垃圾回收器的性能指标2.1 吞吐量一、垃圾回收器分类JVM规范没有明确给出标准按一次执行GC线程数Client模式默认使用串行GC按照与用户进程的工作模式按照碎片化整理来分二、垃圾回收器的性能指标红色是比较重要的指标不可能三角,最多两项最重要两项:吞吐量和暂停时间。两者是相对关系,后面的GC器都会从这两个方面取其一发杨广大2.1 吞吐量...

2021-02-08 22:42:31 98

原创 JVM-垃圾回收的名词概念

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、System.gc()二、内存溢出及内存泄漏2.1 内存溢出2.2 内存泄漏三、STW四、垃圾回收的并行与并发五、安全点六、引用分类:6.1 强引用6.2 软引用前言呵呵~奇怪的小知识:现在的手机之所以变快,是因为手机的内存增加,应用程序会缓存在内存中,就不用每次都从外存读取进来了,就会觉得打开应用很快。这些不必要的缓存会在内存空间不足时被清除,这就是软弱引用的原理。一、System.gc()显示的调用垃圾回收

2021-02-08 08:26:59 167

原创 JVM-垃圾回收算法

文章目录前言一、垃圾是什么?二、标记算法1:引用计数算法三、标记算法2:可达性分析算法四、finalize()方法五、垃圾清除算法1:标记-清除算法六、垃圾清除算法2:复制算法七、垃圾清除算法3:标记-压缩(整理)算法八、“最优”“算法”-分代收集算法九、 增量收集算法十、 分代算法前言学完了JVM运行数据区已经一些补充的内容,终于来到了垃圾回收相关的内容。Java的内存泄漏是指,某些对象已经没用了,但是还是有引用指向它们【Java不存在循环引用,泄漏而真正的元凶是那些在GC roots链中却..

2021-02-07 19:09:37 147

原创 JVM-StringTable

文章目录前言一、String特性二、String的基本操作2.1 添加到常量池2.2 拼接前言String是java语言最重要的类,也是最重要的数据类型。但是你真的了解String吗?试从jvm角度分析String以及深度剖析String类的常见面试题一、String特性声明方式:(1)字面量即String a = “a”;(2)对象式String a = new String(“a”);经过堆的学习,new出来的肯定都是去堆中创建对象。而字面量方式会去堆中的字符串常量池引用对象,

2021-02-07 09:17:50 181 2

原创 JVM-执行引擎

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、二、机器码、汇编语言、三、解释器四、JIP编译器五、模式切换前言字节码文件不能在OS平台运行前后端字节码位置【翻译文本的位置】方法区一、橙色:Javac绿色:解析器蓝色:后端编译器二、机器码、汇编语言、机器码:0-1代码,不同计算机汇编语言:将一个指令变成助记符,翻译【汇编】高级语言:需要翻译成汇编字节码:中间状态,执行引擎三、解释器慢四、JIP编译器Just In Time

2021-02-06 18:22:36 163

原创 剑指-35

文章目录题目描述一、解法一:哈希表法二、解法二:插入法总结题目描述请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。本题的两个解法都很有意思,mark一下【重点学习第二种方法】一、解法一:哈希表法利用哈希表建立原链表head到新链表result的映射第一趟遍历:根据head的val创建新链表节点将 head:result 的键值对放到HashMap中

2021-02-06 12:55:04 125

原创 Java高级-NIO

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、面向流与面向缓冲区二、缓冲区直接缓冲区与非直接缓冲区三、 IO发展四、阻塞与非阻塞前言NIO在jdk1.4时引进,NIO2在jdk1.7时引进。一、面向流与面向缓冲区传统的IO是面向流(Stream)的。流相当于水流,类似于自来水厂的水管, 水管里面装满着着数据的二进制流。每一种流都是单向的【缺少重用】NIO不使用流,而使用通道进行传输。通道可以比作一条铁路,光有铁路并不能拉货,还需要火车,而缓冲区就是

2021-02-05 22:17:48 172

原创 JVM-对象实例化与直接内存

文章目录一、java中创建对象的方法二、字节码分析对象创建三、JVM创建对象的步骤四、对象内存布局五、对象访问六、直接内存一、java中创建对象的方法new对象的方法主要有:直接new,工厂类、创建者类的获取对象方法。Class类的getInstance(); 只可以创建无参public构造Constructor类的getInstance() 无参有参构造器都能使用,且private也可以使用第三方类库提供对象clone(),Object类的clone()反序列化: 从网络、文件等二进制流

2021-02-05 20:13:26 97

原创 Ex23-查找环形链表的入口节点

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录题目描述一、分析二、总结题目描述给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出

2021-02-05 09:47:52 127

空空如也

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

TA关注的人

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