【坚持每日一题6.29】92. 反转链表 II

给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。

示例 1:


image.png

输入:head = [1,2,3,4,5], left = 2, right = 4
输出:[1,4,3,2,5]
示例 2:

输入:head = [5], left = 1, right = 1
输出:[5]

提示:

链表中节点数目为 n
1 <= n <= 500
-500 <= Node.val <= 500
1 <= left <= right <= n

java代码:

class Solution {
    public ListNode reverseBetween(ListNode head, int m, int n) {
        ListNode dummy = new ListNode(-1);
        dummy.next = head;
        ListNode pre = dummy;
        for(int i = 1 ; i<m ; i++){
            pre = pre.next;
        }
        head = pre.next;
        for(int i = m ; i<n ; i++){
            ListNode node = head.next;//node是2的下一个节点.node=3
            System.out.println(node.val);//3 4
            head.next = node.next;//让3的下一个节点和2的下一个相同,相当于2->4
            System.out.println(head.val);//2 2
            node.next = pre.next;//让1的下一个节点也就是2变成node的下一个节点,相当于让3->2
            System.out.println(node.val);//3 4
            pre.next = node;//相当于让1->3,最后整体连接起来,第一次的迭代就是1->3->2->4->5
            System.out.println(pre.next.val);//3 4
        }
        return dummy.next;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容