leetcode链表
爱吃西瓜爱吃肉
这个作者很懒,什么都没留下…
展开
-
【力扣】反转链表
题目:给你单链表的头指针 head 和两个整数left 和 right ,其中left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。该题是部分反转链表,也就是指定位置进行反转反转链表思路:1.新建一个链表,把原链表的末结点插入到新链表头结点2.不建立新链表的话,将遍历向后,将后一个结点插入自身头结点之前。即:1 2 3 4 5 -> 2 1 3 4 5 -> 3 2 1 4 5 -> 4 3...原创 2022-05-16 10:30:21 · 584 阅读 · 0 评论 -
【力扣】分隔链表
给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你应当 保留 两个分区中每个节点的初始相对位置。实训分类博客应该不会经常写,我实训的笔记除了上课的笔记,大部分来自各大博主,没有它们的原文链接不好放上来。回到正题:这道题我讲讲我开始的思路【以原题实例为例】首先head指向第一个大于等于x的前一个结点【即例子中的1】,接下来只需要把后面的结点一个个判断是否大于x,如果小于x那么head【即1..原创 2022-05-10 21:56:12 · 207 阅读 · 0 评论 -
【力扣】旋转链表
给你一个链表的头节点head,旋转链表,将链表每个节点向右移动k个位置。解了几次要么是有的情况没考虑到,要么是力扣网给的例子都极端了,都出错了。下面说说我一开始的思路:最开始的思路挺简单的,就是获取到链表的最后的结点,接k次接到链表表头,比如123 两次那么就是获得链表尾,接到表头3->1->2第二次:2->3->1但是我用到了两个循环,不出所料 最后超出时间限制了 = =代码如下://旋转链表 public static ...原创 2022-05-06 20:44:09 · 321 阅读 · 0 评论 -
【力扣】两两交换链表中的结点
题目:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。第一次自己写出递归(┬_┬),刚开始想的是直接循环,但是没弄出来,就开始一步步推首先两两交换思路:创建一个结点,先让一个交换的第二个结点的值赋给新节点,新节点指向交换的第一个结点,第一个结点与原第二个节点的链接删除,即直接指向第二个结点的下一个结点,图有点抽象😂举个例子:结点1->2->3->4,新创建结点p的值=2(因为1和2交换),..原创 2022-05-04 14:12:11 · 946 阅读 · 0 评论 -
【力扣】删除链表的倒数第N个结点
题目:给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。思路:要删除倒数第N个结点,第一想到的还是循环,如果要删除结点,则需要知道一共要循环多少次,然后找到要删除的结点的上一个结点,直接就可以该结点.next = 该节点.next.next但是题目不是直接告诉要删除第几个,而是倒数第几个,转换一下那么就是删除第(链表长度减去N+1)个结点,循环指向要删除结点的前一个结点。新建一个结点q指向原链表的头结点,不能动,最后返回它 -> 找到要删除链表的前一节点 -&...原创 2022-05-03 21:47:21 · 388 阅读 · 0 评论 -
【力扣】合并两个有序链表
题目:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。题目表示两个已经排好序的链表进行合并,首先新创建一个头节点list3(合并两个链表之后的),因为最后要返回链表的头部,所以要保存新链表的头结点,即p,保持不动,最后返回p.next即可下面进行操作两个链表进行合并,设置一个循环即可,根据list1和list2的自身,对比两者的大小,若链表一list1此时指针指向的值较小,则将其的插入到新链表中,指针继续往下,list1 = list1....原创 2022-05-03 21:14:03 · 727 阅读 · 0 评论