题解 | #反转链表

反转链表

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

package main
import . "nc_tools"
/*
 * type ListNode struct{
 *   Val int
 *   Next *ListNode
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param head ListNode类 
 * @return ListNode类
*/
func ReverseList( head *ListNode ) *ListNode {
    if head == nil || head.Next == nil {
        return head
    }
    next := head.Next
    newhead := ReverseList(next)
    next.Next =head
    head.Next = nil 
    return newhead
}


func ReverseListV1( head *ListNode ) *ListNode {

    var pre  *ListNode 
    cur := head

    for i := 0; ;i++ {
        if cur == nil {
            break
        }
        temp := cur.Next
        cur.Next = pre
        pre = cur
        cur  = temp 
    }
    return pre
}


func ReverseListV2( head *ListNode ) *ListNode {

    pre := &ListNode{}
    pre.Next = head

    for i := 0 ;; i++ {
        if head == nil || head.Next == nil {
            break
        }
        next := head.Next
        head.Next = next.Next
        next.Next = pre.Next
        pre.Next = next
    }

    return pre.Next
    
}


全部评论
也可以头插法
点赞 回复 分享
发布于 2023-10-21 19:17 上海

相关推荐

评论
点赞
收藏
分享

创作者周榜

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