Go实现算法:反转链表(LeetCode)

题目:

反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL

进阶:

你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

解题思路:迭代方式,从前往后依次反转。

/**

* Definition for singly-linked list.

* type ListNode struct {

* Val int

* Next *ListNode

* }

*/

func reverseList(head *ListNode) *ListNode {

var ret *ListNode

for head!=nil{

p:=head.Next

head.Next=ret

ret = head

head = p

}

return ret

}

执行用时0ms

使用递归方法

func reverseList(head *ListNode) *ListNode {

if head==nil{

return nil

}

if head.Next==nil{

return head

}

ret:= reverseList(head.Next)

head.Next.Next=head

head.Next=nil

return ret

}

执行用时0ms

Go实现算法:反转链表(LeetCode)


分享到:


相關文章: