Reverse a linked list from position m to n. Do it in one-pass.
Note: 1 ≤ m ≤ n ≤ length of list.
Example:
Input: 1->2->3->4->5->NULL, m = 2, n = 4
Output: 1->4->3->2->5->NULL
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-linked-list-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
从指定的开始和结束进行倒置链表。
设置一个排头的空节点,next指向head,翻转只用按顺序:
① 1->2->3->4->5->NULL
② 1->3->2->4->5->NULL
③ 1->4->3->2->5->NULL
每次都把后一个放在前。
class Solution {
public ListNode reverseBetween(ListNode head, int m, int n) {
if (head.next == null) {
return head;
}
ListNode beforeHead = new ListNode(-1);
beforeHead.next = head;
ListNode ahead = beforeHead;
for (int i = 1; i < m; i++) {
ahead = ahead.next;
}
ListNode nextHead = ahead.next;
ListNode nextNextHead = nextHead.next;
for (int i = 0; i < n - m; i++) {
nextHead.next = nextNextHead.next;
nextNextHead.next = ahead.next;
ahead.next = nextNextHead;
nextNextHead = nextHead.next;
}
return beforeHead.next;
}
}
870

被折叠的 条评论
为什么被折叠?



