题解 | #反转链表#

反转链表

https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca

/**
 * class ListNode(var `val`: Int) {
 *     var next: ListNode? = null
 * }
 */
object Solution {
    /**
    * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
    *
    * 
        * @param head ListNode类 
        * @return ListNode类
    */
    fun ReverseList(head: ListNode?): ListNode?  {
    // 递推:将当  前要处理的节点 指向 上一个处理过的节点
        // write code here
        var p = head    // 上一个处理过的节点
        var q = head?.next ?: null   // 当前要处理的节点
        var r = q?.next ?: null      // 下一个要处理的节点
        p?.next = null
        while (q!=null){
            q.next = p    // 将当  前要处理的节点 指向 上一个处理过的节点
            p = q         // 下一次  当前节点 变成 上一个处理过的节点
            q = r         // 下一次  下一个要处理的节点  变成  当前要处理的节点
            r = r?.next ?: null  // 下一次 下一个要处理的节点
        }
        return p
    }
}



#Kotlin##悬赏#
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务