LC-链表的中间节点(双指针)
链接:https://leetcode.cn/problems/middle-of-the-linked-list/description/
描述:给你单链表的头结点 head ,请你找出并返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
输入:head = [1,2,3,4,5]
输出:[3,4,5]
解释:链表只有一个中间结点,值为 3 。
输入:head = [1,2,3,4,5,6]
输出:[4,5,6]
解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。
思路:使用快慢指针,慢指针一次走一步,快指针一次走两步,这样当快指针走到链表尾部时,慢指针所在节点就是中间节点。
代码如下:文章来源:https://www.toymoban.com/news/detail-650075.html
public ListNode middleNode(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode a = head;
ListNode b = head;
while (b != null && b.next != null) {
b=b.next.next;
a=a.next;
}
return a;
}
}
双指针是比前面遍历和递归都要好的方法,代码量较少,使用内存也较小。文章来源地址https://www.toymoban.com/news/detail-650075.html
到了这里,关于LC-链表的中间节点(双指针)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!