题解 | #链表内指定区间反转#
链表内指定区间反转
https://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类 */ //遍历链表的所有节点,保存所有的节点值,并对m-n的节点值进行反转 //尾部遍历,并修改m-n的节点值 public ListNode reverseBetween (ListNode head, int m, int n){ if(head==null) return null; // write code here ListNode cur = head; int size = 0; ArrayList<Integer> list = new ArrayList<>(); list.add(0); while(cur!=null){ list.add(cur.val); size++; cur=cur.next; } ListNode ans = head; for(int i = 1;i < m;i++){ ans.val=list.get(i); ans=ans.next; } //反转 for(int j = n;j >= m;j--){ //System.out.println("反转:"+list.get(j)); ans.val=list.get(j); ans=ans.next; } for(int x = n + 1 ;x < size;x++){ ans.val=list.get(x); ans=ans.next; } return head; } }