题解 | #链表内指定区间反转#
链表内指定区间反转
https://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) { // write code here if(m == n) return head; else { if(m == 1) { ListNode cur = head; ListNode ne = head.next; for(int i = m; i < n; i ++) { ListNode temp = ne.next; ne.next = cur; cur = ne; ne = temp; } head.next = ne; head = cur; } else { ListNode pre1 = head; ListNode pre2 = head; ListNode cur = head; for(int i = 1; i <m ; i++) { pre1 = cur; cur = cur.next; } pre2 = cur; ListNode ne = cur.next; for(int i = m; i < n; i++) { ListNode temp = ne.next; ne.next = cur; cur = ne; ne = temp; } pre1.next = cur; pre2.next = ne; } return head; } } }