题目链接
法一(头插法)
public ListNode reverseBetween(ListNode head, int left, int right) {
ListNode dummy = new ListNode(0, head);
ListNode pre = dummy;
for (int i = 0; i < left - 1; i++) {
pre = pre.next;
}
ListNode cur = pre.next, move;
for (int i = left; i < right; i++) {
move = cur.next;
cur.next = move.next;
move.next = pre.next;
pre.next = move;
}
return dummy.next;
}
本地测试
lay.showTitle(92);
Solution92 sol92 = new Solution92();
int[] nums92 = new int[]{1, 2, 3, 4, 5};
int left92 = 2, right92 = 4;
ListNode head92 = new ListNode();
head92 = listOpt.creatListByArray(head92, nums92);
listOpt.showList(head92);
head92 = sol92.reverseBetween(head92.next, left92, right92);
listOpt.showNoHeadList(head92);