题解 | #链表内指定区间反转#
链表内指定区间反转
https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c
class ListNode(param: Int) { var next: ListNode = _ override def toString: String = { var ret = param.toString if (next != null) { ret += "," + next } ret } } object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param m int整型 * @param n int整型 * @return ListNode类 */ def reverseBetween(head: ListNode,m: Int,n: Int): ListNode = { // write code here if (head == null || head.next == null) { return head } val first = new ListNode(0) first.next = head var curr = first.next var next: ListNode = null var pre: ListNode = first var index = 0 while (curr != null && index <= n) { index += 1 next = curr.next println("pre " + pre) println("curr " + curr) println("next " + next) println() var curr2: ListNode = curr var next2: ListNode = null var pre2: ListNode = null while (curr2 != null && index >= m && index <= n) { index += 1 next2 = curr2.next println("pre2 " + pre2) println("curr2 " + curr2) println("next2 " + next2) println() curr2.next = pre2 pre2 = curr2 curr2 = next2 } if (pre2 != null) pre.next = pre2 if (next2 != null) curr.next = next2 pre = curr curr = next } first.next }
引入first节点,使得反转的链表可以临时存放