题解 | #链表内指定区间反转#
链表内指定区间反转
https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c
增加虚拟头节点,避免考虑头节点反转的复杂情况。
一共就需要三步。
package main import . "nc_tools" /* * type ListNode struct{ * Val int * Next *ListNode * } */ /** * * @param head ListNode类 * @param m int整型 * @param n int整型 * @return ListNode类 */ func reverseBetween( head *ListNode , m int , n int ) *ListNode { // write code here if head == nil || head.Next == nil || m == n { return head } h := &ListNode{Next: head} pre := h for i := 1; i < m; i ++ { pre = pre.Next } cur := pre.Next for i := m; i < n; i ++ { temp := cur.Next cur.Next, pre.Next, temp.Next = temp.Next, temp, pre.Next } return h.Next }