题解 | #链表内指定区间反转#重建链表,容易一些
链表内指定区间反转
http://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
List<Integer> list = new ArrayList<>();
ListNode node = head;
while (true) {
if (node == null) {
break;
}
list.add(node.val);
if (node.next == null) {
break;
}
node = node.next;
}
List<Integer> subList = list.subList(m - 1, n);
Collections.reverse(subList);
for (int i = 0; i < subList.size(); i++) {
list.set(i + m - 1, subList.get(i));
}
ListNode newNode = new ListNode(-1);
ListNode temp = newNode;
for (int num : list) {
temp.next = new ListNode(num);
temp = temp.next;
}
return newNode.next;
}
}
神州信息成长空间 150人发布