Leetcode链表的中间节点是哪个?
- 内容介绍
- 文章标签
- 相关推荐
本文共计250个文字,预计阅读时间需要1分钟。
力扣链接+通常我们想到的会是+先遍历一次知道链表节点的个数后除以2,再进行一次查找+但这种做法需要遍历两次链表+消耗比较大+但是使用了快慢指针法就相对简单了+只需要遍历一次链表+
力扣链接
一般我们想到的会是 先遍历一次知道链表结点的个数后再除二,然后再遍历一次进行查找,但是这种做法需要遍历两次链表,消耗比较大,但是使用了快慢指针法就相对简单了,只需遍历一次.
快慢指针法:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* middleNode(struct ListNode* head)
{
struct ListNode* slow,*fast;//定义快慢两个指针
slow = fast = head;
while(fast && fast->next)//考虑到结点个数的奇偶
{
slow = slow->next;
fast= fast->next->next;
}
return slow;
}
本文共计250个文字,预计阅读时间需要1分钟。
力扣链接+通常我们想到的会是+先遍历一次知道链表节点的个数后除以2,再进行一次查找+但这种做法需要遍历两次链表+消耗比较大+但是使用了快慢指针法就相对简单了+只需要遍历一次链表+
力扣链接
一般我们想到的会是 先遍历一次知道链表结点的个数后再除二,然后再遍历一次进行查找,但是这种做法需要遍历两次链表,消耗比较大,但是使用了快慢指针法就相对简单了,只需遍历一次.
快慢指针法:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* middleNode(struct ListNode* head)
{
struct ListNode* slow,*fast;//定义快慢两个指针
slow = fast = head;
while(fast && fast->next)//考虑到结点个数的奇偶
{
slow = slow->next;
fast= fast->next->next;
}
return slow;
}

