LeetCode -- 206. 反转链表 Golang AC Code

206. 反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

示例 1:

输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
示例 2:

输入:head = [1,2]
输出:[2,1]
示例 3:

输入:head = []
输出:[]

提示:

链表中节点的数目范围是 [0, 5000]
-5000 <= Node.val <= 5000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


有时候不要把思路限制的太窄,先是找到解决问题的方法,然后才是怎么解决问题,比如这道题,我想不出来怎么用递归的方式去解,但是用循环就很好处理,先解决问题,然后在想怎么用递归去解决问题。

// 遍历方式解决问题

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func reverseList(head *ListNode) *ListNode {
// 注意链表为空的情况
     if head == nil{
        return nil
     }
    stack := []*ListNode{}
    top := 0

    for head != nil{
        stack = append(stack, head)
        head = head.Next
        top++
    }

    for i := top - 1; i > 0; i--{
        stack[i].Next = stack[i-1]
    }
    stack[0].Next = nil

    return stack[top-1]
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容