当前位置:   article > 正文

Golang | Leetcode Golang题解之第143题重排链表

Golang | Leetcode Golang题解之第143题重排链表

题目:

题解:

  1. func middleNode(head *ListNode) *ListNode {
  2. slow, fast := head, head
  3. for fast.Next != nil && fast.Next.Next != nil {
  4. slow = slow.Next
  5. fast = fast.Next.Next
  6. }
  7. return slow
  8. }
  9. func reverseList(head *ListNode) *ListNode {
  10. var prev, cur *ListNode = nil, head
  11. for cur != nil {
  12. nextTmp := cur.Next
  13. cur.Next = prev
  14. prev = cur
  15. cur = nextTmp
  16. }
  17. return prev
  18. }
  19. func mergeList(l1, l2 *ListNode) {
  20. var l1Tmp, l2Tmp *ListNode
  21. for l1 != nil && l2 != nil {
  22. l1Tmp = l1.Next
  23. l2Tmp = l2.Next
  24. l1.Next = l2
  25. l1 = l1Tmp
  26. l2.Next = l1
  27. l2 = l2Tmp
  28. }
  29. }
  30. func reorderList(head *ListNode) {
  31. if head == nil {
  32. return
  33. }
  34. mid := middleNode(head)
  35. l1 := head
  36. l2 := mid.Next
  37. mid.Next = nil
  38. l2 = reverseList(l2)
  39. mergeList(l1, l2)
  40. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/726659
推荐阅读
相关标签
  

闽ICP备14008679号