前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法练习(13) - 反转链表中间某段

算法练习(13) - 反转链表中间某段

作者头像
惊羽-布壳儿
发布2022-06-15 16:07:57
1890
发布2022-06-15 16:07:57
举报
文章被收录于专栏:惊羽-布壳儿

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

答案

代码语言:javascript
复制
class Solution {
    public ListNode reverseBetween(ListNode head, int left, int right) {
        ListNode dummyHead = new ListNode(0);
        dummyHead.next = head;

        ListNode g  = dummyHead;
        ListNode p  = dummyHead;

        for(int i =0;i<left-1;i++){
            g = g.next;
            p = p.next;
        }
        p = p.next;

        for(int i = left;i < right;i++){
            // 将p的next缓存一下
            ListNode removed = p.next;
            // p一直在left节点上,指向next.next
            p.next = p.next.next;
            // 将缓存值头插到g.next
            removed.next = g.next;
            // 将缓存值尾插到g
            g.next = removed;
        }
        return dummyHead.next;
    }
}

思路

先将指针 p ,g 同时移动到 left前节点

再把p指针后移一位到left节点

以p节点为中间点,将p后边的节点头插到p节点和g节点之间;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目 : 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。
  • 答案
  • 思路
    • 先将指针 p ,g 同时移动到 left前节点
      • 再把p指针后移一位到left节点
        • 以p节点为中间点,将p后边的节点头插到p节点和g节点之间;
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档