湖南it网站建设mxtia,自己做网站都要什么软件,陕西seo排名,网站开发需要什么东西主页#xff1a;17_Kevin-CSDN博客 专栏#xff1a;《Leetcode》 题目 通过题目的要求可以判断出有两种示例要解决#xff0c;一种是偶数节点的链表#xff0c;一种是奇数节点的链表#xff0c;应对这两种情况我们需要使程序对二者都可以兼容。 解决思路
struct ListNode… 主页17_Kevin-CSDN博客 专栏《Leetcode》 题目 通过题目的要求可以判断出有两种示例要解决一种是偶数节点的链表一种是奇数节点的链表应对这两种情况我们需要使程序对二者都可以兼容。 解决思路
struct ListNode* middleNode(struct ListNode* head)
{struct ListNode *slow head,*fast head;while(fast fast - next){slow slow - next;fast fast - next - next;}return slow;
}
中间节点只要找到中间的位置就能找到中间的节点。那么这个位置要怎么去查找呢
我们可以用快慢指针的思想来进行查找定义一个慢指针再定义一个是慢指针速度二倍的快指针这样的话当快指针到最后的位置的时候慢指针指向的就是中间节点了。
但是在查找的时候还要同时解决上面提到的两种情况 ①奇数链表 从两个指针的初始开始研究当前两个指针都处在第一个节点的位置然后我们开始移动。 可以发现在奇数数量节点的链表中当fast到达最后一个节点的时候slow刚好指向了中间节点。这样就完成了查找中间节点的目的该遍历循环的条件是fast - next NULL也就是当fast的next是NULL的时候终止循环此时的slow指向就是中间节点。 ②偶数链表 同样的我们也是从头开始循环。 因为是偶数链表所以需要查找到的中间节点的位置是中间两个节点中的第二个当循环后发现当fast到达NULL的时候slow指向的才是中间的第二个节点所以该情况的循环条件为fast NULL。 以上便是本篇博客的全部内容感谢您的支持~