力扣:92. 反转链表 II
This commit is contained in:
parent
d37bfa23e9
commit
da94ad6594
@ -0,0 +1,53 @@
|
|||||||
|
package com.code.leet.study.t20210209;
|
||||||
|
|
||||||
|
import com.code.leet.entiy.ListNode;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。
|
||||||
|
* <p>
|
||||||
|
* 说明:
|
||||||
|
* 1 ≤ m ≤ n ≤ 链表长度。
|
||||||
|
*/
|
||||||
|
public class ReverseBetween {
|
||||||
|
/**
|
||||||
|
* 92. 反转链表 II
|
||||||
|
*/
|
||||||
|
public ListNode reverseBetween(ListNode head, int m, int n) {
|
||||||
|
if (n == 1) {
|
||||||
|
return head;
|
||||||
|
}
|
||||||
|
List<ListNode> list = new ArrayList<>();
|
||||||
|
int num = 1;
|
||||||
|
ListNode before = new ListNode(0);
|
||||||
|
ListNode after = null;
|
||||||
|
ListNode temp = head;
|
||||||
|
while (temp != null) {
|
||||||
|
if (num == m - 1) {
|
||||||
|
before = temp;
|
||||||
|
}
|
||||||
|
if (num >= m && num <= n) {
|
||||||
|
list.add(temp);
|
||||||
|
}
|
||||||
|
if (num == n) {
|
||||||
|
after = temp.next;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
temp = temp.next;
|
||||||
|
num++;
|
||||||
|
}
|
||||||
|
ListNode newHead = before;
|
||||||
|
int size = list.size();
|
||||||
|
for (int i = size - 1; i >= 0; i--) {
|
||||||
|
before.next = list.get(i);
|
||||||
|
before = before.next;
|
||||||
|
}
|
||||||
|
before.next = after;
|
||||||
|
if (m == 1) {
|
||||||
|
head = newHead.next;
|
||||||
|
}
|
||||||
|
return head;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user