题解 | #链表内指定区间反转#

链表内指定区间反转

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节点,使得反转的链表可以临时存放

全部评论

相关推荐

程序员小白条:这比例牛逼,750:1
点赞 评论 收藏
分享
但我还是会继续秋招的
投递京东等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务