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

题目:

题解:

func middleNode(head *ListNode) *ListNode {
    slow, fast := head, head
    for fast.Next != nil && fast.Next.Next != nil {
        slow = slow.Next
        fast = fast.Next.Next
    }
    return slow
}

func reverseList(head *ListNode) *ListNode {
    var prev, cur *ListNode = nil, head
    for cur != nil {
        nextTmp := cur.Next
        cur.Next = prev
        prev = cur
        cur = nextTmp
    }
    return prev
}

func mergeList(l1, l2 *ListNode) {
    var l1Tmp, l2Tmp *ListNode
    for l1 != nil && l2 != nil {
        l1Tmp = l1.Next
        l2Tmp = l2.Next

        l1.Next = l2
        l1 = l1Tmp

        l2.Next = l1
        l2 = l2Tmp
    }
}

func reorderList(head *ListNode) {
    if head == nil {
        return
    }
    mid := middleNode(head)
    l1 := head
    l2 := mid.Next
    mid.Next = nil
    l2 = reverseList(l2)
    mergeList(l1, l2)
}

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-11 09:40:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-11 09:40:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-11 09:40:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-11 09:40:01       20 阅读

热门阅读

  1. 如何用visual studio 2022创建MAUI的Hello world程序

    2024-06-11 09:40:01       6 阅读
  2. 使用docker部署在MacOS上部署minecraft服务器

    2024-06-11 09:40:01       8 阅读
  3. VB.net调用VC DLL

    2024-06-11 09:40:01       10 阅读
  4. 程序员如何高效挖掘市场需求

    2024-06-11 09:40:01       9 阅读
  5. MyEclipse 新手使用教程

    2024-06-11 09:40:01       11 阅读
  6. adb 脚本化Android系统截图和录屏

    2024-06-11 09:40:01       8 阅读
  7. 记一次大量CSV数据文件同步到数据库

    2024-06-11 09:40:01       7 阅读
  8. go_compiler

    2024-06-11 09:40:01       4 阅读
  9. 平均召回(Average Recall,AR)概述

    2024-06-11 09:40:01       11 阅读
  10. 细说wayland和X11

    2024-06-11 09:40:01       7 阅读