【题目】
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。
【思路】
遍历链表,新建list存储left到right范围内的值
再次遍历,到达位置时替换值
【代码】
public static ListNode reverseBetween(ListNode head, int left, int right) {
ListNode p = head;
int i = 1;
ArrayList<Integer> record = new ArrayList<>(right - left + 1);
while (p != null){
if(i >= left && i <= right){
record.add(p.val);
}
p = p.next;
i++;
}
i = 1;
int j = record.size() - 1;
p = head;
while (p != null){
if(i >= left && i <= right){
p.val = record.get(j);
j--;
}
i++;
p= p.next;
}
return head;
}