前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >92. 反转链表 II

92. 反转链表 II

作者头像
CaesarChang张旭
发布2021-06-10 09:50:54
2120
发布2021-06-10 09:50:54
举报
文章被收录于专栏:悟道

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

将 low移动到第一个要反转的节点的前面,将 fast移动到第一个要反转的节点的位置上。我们以 m=2,n=4为例。 2、将 fast 后面的元素删除,然后添加到low的后面。也即头插法。 3、根据 m 和 n 重复步骤(2) 4、返回 head

代码语言:javascript
复制
  
class Solution {
    public ListNode reverseBetween(ListNode head, int left, int right) {
        /**
        双指针+头插法
         */
        ListNode newNode=new ListNode(-1); //防止fast.next.next空指针
        newNode.next=head;
        ListNode low=newNode,fast=newNode.next;
        //移动到相应位置, low=移动的前面的那个 fast=移动的那个
        for(int i=0;i<left-1;i++){
            low=low.next;
            fast=fast.next;
        }
        //头插法删除fast.next  插入到low.next
 
        for(int i=0;i<right-left;i++){
            ListNode temp=fast.next;
            fast.next=fast.next.next;
            temp.next=low.next;
            low.next=temp;
            
        }
 
        return newNode.next;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/06/03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档