经典面试手撕题

#一人分享一道面试手撕题#
反转链表。题目描述:给定一个单链表的头节点 head,请你反转链表,并返回反转后的头节点。(这应该是最经典的手撕题之一)

答案如下:
一、迭代法(时间复杂度O(n),空间复杂度O(1))
python
def reverselist(head):
    prev = None          # 前驱节点初始化为空
    curr = head          # 当前节点从头开始
    while curr:
        nextnode = curr.next  # 临时保存下一个节点
        curr.next = prev       # 反转指针方向
        prev = curr            # 前驱节点后移
        curr = next_node       # 当前节点后移
    return prev           # 最终prev成为新头节点
关键点:通过三指针(prev/curr/next)逐步调转箭头方向,注意指针更新的顺序。
全部评论
迭代确实是常用的了
点赞 回复 分享
发布于 01-09 21:58 陕西
反转单链表,社招也考过
点赞 回复 分享
发布于 01-07 23:55 北京
期待你分享更多的手撕题目
点赞 回复 分享
发布于 01-07 16:07 广东

相关推荐

2025-12-28 09:59
复旦大学 Java
点赞 评论 收藏
分享
01-11 12:43
门头沟学院 Java
一面30min左右自我介绍+项目全流程讲解 5min左右项目提问10min左右(只能回忆一部分)1.在与大模型的交互中,通常采用的是SSE 协议,为什么要在项目中使用IM来进行通讯?2.分布式ID高性能改造,做了那些方面的性能优化?3.消息推送平台中数据存储的设计?八股15min1.分布式锁?分布式锁要解决那些问题?2.数据一致性解决方案中,延迟双删的问题?3.新建一个线程池要指定哪些参数?整个运行过程?4.核心线程数量,还有最大线程数量,还有一个是工作队列。但是工作队列我们一般都会去选择有界的,很少去选择无界的这个队列。基于这三个参数的这个大小,我们应该怎么去评估?5.队列的大小应该怎么去设置?6.HashMap扩容流程7.索引失效有哪些场景?8.类型转换为什么会失效?9.RocketMQ中的事务消息原理?场景题5min左右1在不使用RoctetMQ本身提供的这一套机制的话,我们自身有没有什么其他的方案能够避免这种问题?二面30min左右(已挂)1.gap一年在做什么?2.讲一下项目中的两个点亮,如何设计,碰到的问题,怎么解决的?3.Object中有两个方法,一个是 equals,一个是 hashCode。一般是重写了equals,单身通常是要重写hashCode,为什么?4.写Java代码的时候,打交道最多的,一个是 JDK, 一个是Spring?讲一下在哪个地方见到用到了什么样的设计模式。5.MySQL的索引默认Innodb引擎,为什么?6.数据库的隔离级别7.如果开发的应用程序上线之后,突然出现CPU猛涨的情况,如何去查?8.双栈实现一个队列,口述思路。
查看22道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务