题解 |链表指定区间翻转

链表内指定区间反转

http://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c

思路

主要是分情况讨论,当m=1和m不等于1时,当m=1时,直接用头插法,不等于1时,找到翻转区间的前一个节点,再使用头插法。

代码

import java.util.*;
public class Solution {
    public ListNode reverseBetween (ListNode head, int m, int n) {
        if (m == 1){
            ListNode tmp = head, p = head.next;
            int index = 2;
            while (index++ <= n){
                tmp.next = p.next;
                p.next = head;
                head = p;
                p = tmp.next;
            }
            return head;
        }
        // 遍历指针节点
        ListNode p = head, pre = null;
        int index = 1;
        // 找到翻转区间的头结点
        while (index++ < m){
            pre = p;
            p = p.next;
        }
        if (p == null) return head;
        // 略过第一个节点
        ListNode tmp = p;
        p = p.next;
        while (index++ <= n){
            tmp.next = p.next;
            p.next = pre.next;
            pre.next = p;
            p = tmp.next;
        }
        return head;
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
重生我想学测开:嵌入式的问题,我准备入行京东外卖了
点赞 评论 收藏
分享
当初高考报计算机真是造大孽了啊!卷的飞起!哪都是计算机的人,考研,考公,找工作全他奶的计算机的人,太难了。国企也是。关键一届比一届卷,造大孽了!
_Lyrics_:因为计算机,没有体验到快乐的大学研究生时光,好不容易修完课程就要出去实习,看着别人专业可以一起搓麻将,游山玩水,而我却要自己一个人住在北上不到十平米的出租屋,每天两点一线
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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