使用 快慢双指针,快指针一次走两步,慢指针一次走一步,十分 tricky;
LinkNode* FindMid(LinkNode *p){
if (!p) return NULL;
LinkNode* slow = p, *fast = p;
while (fast && fast->next){
slow = slow->next;
fast = fast->next->next;
}
return slow;
}
双指针的应用场景:
- 链表中是否有环;
- 寻找链表的倒数第 K 个结点;
使用 快慢双指针,快指针一次走两步,慢指针一次走一步,十分 tricky;
LinkNode* FindMid(LinkNode *p){
if (!p) return NULL;
LinkNode* slow = p, *fast = p;
while (fast && fast->next){
slow = slow->next;
fast = fast->next->next;
}
return slow;
}
双指针的应用场景:
【数据结构】第二章——线性表(8)详细介绍了循环链表与静态链表的相关内容……
/* * 快慢指针: * 带有头结点的单链表L, 设计一个
,一起学算法 作者 | 码海
说明:本文章用于 “单链表题+数组题”“链表”知识双指针技巧:分两类,一类是“快慢指针”,
...
举报文章
请选择举报类型
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M