题解 | #链表内指定区间反转#

链表内指定区间反转

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

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param head ListNode类
     * @param m int整型
     * @param n int整型
     * @return ListNode类
     */
    public ListNode reverseBetween (ListNode head, int m, int n) {
        if (null == head || head.next == null) {
            return head;
        }
	  	// 添加哨兵节点,对于从第一个节点开始的 帮助
        ListNode dump = new ListNode(-1);
        dump.next = head;
        // 找到前一个节点
        ListNode pre = dump;// pre = -1 -> 1 -> 2 -> 3 -> 4 -> 5 -> NULL m = 1
        for (int i = 0; i < m - 1; i++) {
            pre = pre.next;
        }

        // 后续节点(位置到n) 做反转
        ListNode cur = pre.next; // cur = 2->3->4->5-> NULL
        ListNode reverseNode = null;
        for (int i = 0; i <= n - m; i++) {
            ListNode temp = cur.next;
            cur.next = reverseNode;
            reverseNode = cur;
            cur = temp;
        }
	  	// 拼上pre 和 后续的 其中cur代表后续的 
        if (null != reverseNode) {
            ListNode last = reverseNode;
            while (null != last.next) {
                last = last.next;
            }
            last.next = cur;
            pre.next = reverseNode;
        }
        return dump.next;
    }
}

全部评论

相关推荐

风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
双非有机会进大厂吗
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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