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

链表内指定区间反转

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 {
    public ListNode reverseBetween(ListNode head, int m, int n) {
		ListNode temp = head;
		ListNode pre = new ListNode(0);
		ListNode p = null;
		ListNode q = null;
		ListNode g = null;
		for(int i=1; i<m; i++){
			pre.next = temp;
			temp = temp.next;
		}
			g = temp;
		for(int i=0; i<=n-m; i++){
			q = temp.next;
			temp.next = p;
			p = temp;
			temp = q;
		}
		if(pre.next == null){
			head = p;
		}
		else{
			pre.next.next = p;
		}
		g.next = temp;
		return head;
	}
}

#一次遍历解决单链表中部分链表的反转#
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务