Leetcode-92.反转链表II

92. 反转链表 II
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。

说明:
1 ≤ m ≤ n ≤ 链表长度。

示例:

输入: 1->2->3->4->5->NULL, m = 2, n = 4
输出: 1->4->3->2->5->NULL
运行结果
图片说明
解题思路
递归反转链表
先实现递归反转前n个元素(记录后续正常节点)
n==1,则后续正常节点为head.next,反转后的头结点也为head
n>1,则进行递归,最后将head连在head.next和正常节点中间
然后再递归反转m到n
当m=1时,等价于反转前n个元素
当m》1时进行递归,最后head连在返回的头结点之前
java代码

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    ListNode successor=null;
    public ListNode reverseBetween(ListNode head, int m, int n) {
        if(m==1){
            return reverseN(head,n);
        }
        ListNode last=reverseBetween(head.next,m-1,n-1);
        head.next=last;
        return head;
    }
    public ListNode reverseN(ListNode head,int n){
        if(n==1){
            successor=head.next;
            return head;
        }
        ListNode last=reverseN(head.next,n-1);
        head.next.next=head;
        head.next=successor;
        return last;
    }
}
Leetcode-牛客-刷题笔记 文章被收录于专栏

本专栏主要用于分享栏主在准备java后端面试过程中的刷题笔记

全部评论

相关推荐

2025-12-08 18:11
曲阜师范大学 Java
程序员花海_:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
码农索隆:以下是我以我微薄的认知提供的建议: 1.考个教师资格证,去当体育考试。 2.去健身房当健身教练(因为在我印象里面体育生身材都不错)。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务