Reverse a linked list from position m to n. Do it in-place and in one-pass. For example: Given 1->2->3->4->5->NULL, m = 2 and n = 4, return 1->4->3->2->5->NULL. Note: Given m, n satisfy the following condition: 1 ≤ m ≤ n ≤ length of list.
这一题的主要就是链表的逆序,逆序比较好的解法有前插,利用栈,这里我们使用前插的方式解决
先看代码
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public ListNode reverseBetween(ListNode head, int m, int n) { if(head==null||m==n) return head; ListNode dummy=new ListNode(0); dummy.next=head; ListNode mPre=dummy; ListNode mNode=head; int i=1; while(i<m){ mPre=mPre.next; mNode=mNode.next; i++; } while(i<n){//前插 ListNode temp=mPre.next; mPre.next=mNode.next; mNode.next=mNode.next.next; mPre.next.next=temp; i++; } return dummy.next; } }
首先需要找到m节点和m节点的前节点。
找到m节点和其前节点后我们就可以进行前插了。
ListNode temp=mPre.next;//现将mPre的后面一个节点保存起来。插入的时候就是讲其他节点插入mPre和mPre后面一个节点之间,所以要保存mPre的后一个节点
mPre.next=mNode.next;//mNode.next指向要插入的节点。将此节点作为mPre的next节点
mNode.next=mNode.next.next;//mNode的next指针指向他的下下个节点
mPre.next.next=temp;//将插入节点的next指针指向我们之前保存的节点。完成节点的插入
相关推荐
进行一次遍历,把第m到n个元素进行翻转,即依次插入到第m个节点的头部。这个题还是有意思的。建议后面再多做几遍。Python代码如下:self.next = No
Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K=3, then you must output 3→2→1→6→5→...
C#,递归方法实现双向链表(Doubly Linked List)的反转(Reverse)算法与源代码 递归算法的执行过程分递推和回归两个阶段。在递推阶段,把较复杂的问题(规模为n)的求解推到比原问题简单一些的问题(规模小于n)的...
LeetCode 206的题目是“反转链表”(Reverse Linked List),它要求将一个单链表的所有节点反转,并返回反转后链表的头节点。这是一个基础但非常重要的链表操作问题,它不仅考察了对链表数据结构的理解,还涉及到了...
List(链表) ID Difficulty Title Java Python 21 Easy Merge Two Sorted Lists 83 Easy Remove Duplicates from Sorted List 141 Easy Linked List Cycle 160 Easy Intersection of Two Linked Lists 203 Easy ...
链表逆置 定义了一个简单的链表节点类 `ListNode`,然后实现了 `reverse_linked_list` 函数来逆置链表。最后,创建一个简单的链表并在逆置之前和之后打印链表的值,以验证逆置操作。
reverse-linked-list-ii(Reverse a Sub-list) 141 环形链表 linked-list-cycle 142 环形链表 II linked-list-cycle-ii 143 重排链表 reorder-list 148 排序链表 sort-list 234 回文链表 palindrome-linked-list 双...
Singly Linked List: 1. DestroyList 2. InsertList 3. DeleteList 4. TraverseList 5. SearchList 6. ReverseList 7. IsLoopList 8. ReverseEvenList 9. FindMidNode Double Linked List: 1. ...
第一部分(链表): LeetCode 21.Merge Two Sorted Lists LeetCode 23.Merge k Sorted Lists(solve1) LeetCode 23.Merge k Sorted Lists(solve2) LeetCode 86.Partition List LeetCode 92.Reverse Linked List II ...
关于 这个项目包含了一个蛇游戏,但是有点扭曲。 在这里,我已经实现了反向链接算法,并且可以类似地用于可视化相同的算法。 可用脚本 在项目目录中,可以运行: npm start 在开发模式下运行该应用程序。...
preorder-traversal链表reorder-list链表linked-list-cycle-ii链表linked-list-cycle动态规划word-break-ii动态规划word-break链表copy-list-with-random-pointer复杂度single-number-ii复杂度single-number动态规划
92-反转链表II:reverse-linked-listt-ii 141-环形链表:linked-list-cycle 142-环形链表:linked-list-cycle-ii 160-相交链表:intersection-of-two-linked-lists 206-反转一个单链表:reverse-linked-list 20-有效的...
linked-list-cycle-ii 链表 linked-list-cycle 链表 copy-list-with-random-pointer 复杂度 single-number 动态规划 candy 贪心 gas-station 动态规划 palindrome-partitioning-ii 动态规划 triangle 树 sum-root-to...
Reverse Linked List 队列 Queue 力扣 933 最近的请求次数 | Number of Recent Calls 力扣 225 用队列实现栈 | Implement Stack Using Queue 力扣 622 设计循环队列 | Design Circular Queue 力扣 641 设计循环双端...
终生成长 :hot_beverage: 为什么要建这个仓库 梳理自己掌握的知识点,整理自己的知识体系。... Reverse Linked ListLeetcode 141. Linked List CycleLeetcode 21. Merge Two Sorted ListsLeetCode 224. Basic Cal
给顺序表和链表的实现分别使用添加成员函数以及对象的应用两种方法实现线性表中元素的逆置(reverse)和单个元素移动到特定位置的操作(move)。 编写一个函数,用于合并两个顺序表。输入的顺序表按照其元素从小到大排序...
链接:https://leetcode-cn.com/problems/reverse-linked-list 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路: 思路1:迭代 假设有链表1->2->3->4->5->None, 反转后得None<-...
List链表 栈 队列 Tree数 遍历、排序 分治 动态规划 2.链表 递归的模板: public ListNode reverseList(参数0) { if (终止条件) return; 逻辑处理(可能有,也可能没有,具体问题具体分析) //递归调用 ListNode ...
leetcode备忘录系统算法-数据结构 ...位操作练习 - Working with bit maps - Bit shifting 递归、回溯和记忆 - Reverse a number - Pow (x,n) - Fibonacci - Merge 2 sorted lists - Reverse linked list - Sear
# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None from collections import deque class Solution: def reverseList(self, head: ListNode) -...