定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

 

示例:

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

限制:

0 <= 节点个数 <= 5000

题解:

  • 采用原地反转的方式进行反转
    这里假设存在旧链表head: 1->2->3->4->nil; 此时定义一个新链表 newHead;进行原地反转,首先反转节点 1: next=head.next; head.next=newHead; newHead=head; head=next;经过此轮反转 新链表为1->nil;旧链表为 2->3->4->nil ;此时循环执行即可完成反转。
func reverseList(head *ListNode) *ListNode {
    // 原地反转
    if head==nil||head.Next==nil{
        return head
    }
    var newHead *ListNode
    var next *ListNode
    for head!=nil{
        next=head.Next
        head.Next=newHead
        newHead=head
        head=next
    }
    return newHead
}
  • 采用递归的方式

思路,大致是 反转 下一个节点,然后当前节点的下一个节点的下一个节点为原来的头节点,原来的头节点的下一个节点为空

func reverseList(head *ListNode) *ListNode {
    // 递归反转
    if head==nil||head.Next==nil{
        return head
    }
    newHead:=reverseList(head.Next)
    head.Next.Next=head
    head.Next=nil
    return newHead
}

菜鸟系列 Golang 实战 Leetcode —— 面试题24. 反转链表的更多相关文章

  1. LeetCode 面试题24. 反转链表

    题目链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/ 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. ...

  2. 【剑指offer】面试题 24. 反转链表

    面试题 24. 反转链表

  3. 【剑指Offer】面试题24. 反转链表

    题目 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3 ...

  4. 《剑指offer》面试题24. 反转链表

    问题描述 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4-> ...

  5. 【算法训练营day4】LeetCode24. 两两交换链表中的结点 LeetCode19. 删除链表的倒数第N个结点 LeetCode面试题 02.07. 链表相交 LeetCode142. 环形链表II

    [算法训练营day4]LeetCode24. 两两交换链表中的结点 LeetCode19. 删除链表的倒数第N个结点 LeetCode面试题 02.07. 链表相交 LeetCode142. 环形链表 ...

  6. 剑指 Offer 24. 反转链表

    剑指 Offer 24. 反转链表 Offer 24 题目描述: 常规解法 本题的解法很常规,没有其他特别的坑,只需要将链表反转即可. package com.walegarrett.offer; / ...

  7. 【python】Leetcode每日一题-反转链表 II

    [python]Leetcode每日一题-反转链表 II [题目描述] 给你单链表的头节点 head 和两个整数 left 和 right ,其中 left <= right .请你反转从位置 ...

  8. 【Java】 剑指offer(24) 反转链表

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头 ...

  9. 剑指offer-面试题16.反转链表

    题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后的头结点 链表结点定义如下: struct ListNode { int m_nKey; ListNode* m_pNext; } 其实 ...

随机推荐

  1. vue项目打包,生成dist文件夹,如何修改文件夹的名字

    vue项目打包之后的dist文件目录是如下 如果想要修改dist或则static文件名称,需要打开config / index.js build: { // Template for index.ht ...

  2. 华为路由器AR1220E-S通过web页面不能登录

    问题原因:由于在WEB页面配置了“远程信任主机”,但是信任主机和路由器不在一个网段,导致所有IP都不能通过WEB页面管理路由器 解决方案:通过console口直接连接路由器,删除信任主机,此次咨询了华 ...

  3. ubuntu 更新源 或者 apt-get install 出错404 not found ,Failed to fetch

    1.考虑是不是能上网 2.用apt-get update ,然后再试试apt-get install 如果apt-get update 也出现很多 404 not found 或者 failed to ...

  4. 3)利用Build.php自动创建目录和文件

    (1)首先做法参照: thinkphp5的手册的  命令行--->自动生成目录结构 或者看云的资料:https://www.kancloud.cn/manual/thinkphp5/118021 ...

  5. 41)PHP,数据库函数的注意点

    (1)那个mysqli_connect()            函数返回的是一个数据库连接对象,所以,你要是var_dump()这个函数的返回值,就是一个对象 (2)那个mysqli_query() ...

  6. druid yml

    application-db.yml pagehelper: helperDialect: mysql reasonable: true supportMethodsArguments: true p ...

  7. 卸载python3

    rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps 卸载pyhton3 whereis python3 |xargs rm -frv 删除 ...

  8. 2.Redis数据类型

    Redis中存储数据是通过key-value存储的,对于value的类型有以下几种: 字符串 Hash类型 List Set SortedSet(zset) 注:在redis中的命令语句中,命令是忽略 ...

  9. python或pip'不是内部或外部命令”

    Python不是内部外部命令:说明在环境变量中没有添加python的安装文件夹路径 所以我们在path环境变量中添加 E:\python36; Pip不是内部外部命令:说明在环境变量中没有添加pyth ...

  10. windows下面apache配置虚拟目录(测试使用,发布网站不建议目录访问)

    windows下面是这样简单设置 1 Apache虚拟目录: 针对某一目录可以这么设置: Alias /aidd2008 "D:/php/web/aidd2008" <Dir ...