题解 | #链表内指定区间反转# 先创建头结点,然后保存前节点、当前节点以及下一节点进行反转

链表内指定区间反转

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

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param head ListNode类 
     * @param m int整型 
     * @param n int整型 
     * @return ListNode类
     */
    public ListNode reverseBetween (ListNode head, int m, int n) {
        int count = m;
        ListNode tmp = head;
        
        ListNode preNode = new ListNode(-1);
        preNode.next = tmp;
        ListNode retHeadNode = preNode;
        
        ListNode nextNode;
        ListNode next2Node;
        while(m != 1){
            preNode = tmp;
            tmp = tmp.next;
            m--;
        }
        while(tmp != null && count < n){
            nextNode = tmp.next;
            next2Node = tmp.next.next;
            ListNode nextTmpNode = preNode.next;
            preNode.next = nextNode;
            nextNode.next = nextTmpNode;
            tmp.next = next2Node;
            count++;
        }
        return retHeadNode.next;
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-10 11:27
明天又是董事长面,啥时候是个头啊
积极向上的林同学:董事长亲自面试
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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