利用快慢指针寻找链表中间节点
876. 链表的中间结点 这道题要求我们找到链表中的中间位置,首先想到第一种方法,使用两个指针,一个从头遍历到尾部确定长度,一个从头遍历到相应位置。那么有没有一遍遍历就能解决的?那么我们想到快慢指针,因为快慢指针往往可以做到一遍遍历,在慢指针处找到答案
做法:
慢指针走一步,快指针走两步。这样快指针到末尾时,慢指针走到n位置,快指针在2n-1位置,这时就找到了中间位置
代码:
func middleNode(head *ListNode) *ListNode {
l := head
r := head
for r != nil && r.Next != nil {
l = l.Next
r = r.Next.Next
}
return l
}
分类:
leetcode题解
, 算法思想
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)