前言
焦虑不会消除明天的悲伤 只会让你今天的力量荡然无存
本章的内容是力扣每日随机一题的部分方法的解析
提示:以下是本篇文章正文内容,下面案例可供参考
876. 链表的中间结点
给你单链表的头结点 head ,请你找出并返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
链接
876. 链表的中间结点 link
方法一:快慢指针
1.1 代码:
struct ListNode* middleNode(struct ListNode* head)
{
struct ListNode* fast=head;
struct ListNode* slow=head;
while(fast&&fast->next)
{
slow=slow->next;
fast=fast->next->next;
}
return slow;
}
1.2 流程图:
- 奇数
- 偶数
方法二:找中间结点
2.1 代码:
struct ListNode* middleNode(struct ListNode* head)
{
struct ListNode* p=head;
struct ListNode* q=head;
int i=0;
while(p!=NULL)
{
i++;
p=p->next;
}
int j=0;
for(j=0;j<i/2;j++)
{
q=q->next;
}
return q;
}
2.2 流程图:
- 奇数
- 偶数
总结
Ending,今天的力扣每日一题内容就到此结束啦,如果后续想了解更多,就请关注我吧,一键三连,还有许多种方法没有写出希望各位佬补充哦~