网站备案多久过期,四川省建设厅网站投诉,一个小程序开发多少钱,橙网站876. 链表的中间结点 - 力扣#xff08;LeetCode#xff09; 思路 思路#xff1a;首先最容易想到的思路是什么呢#xff0c;就是先遍历一遍链表#xff0c;用一个值count来记录链表的长度#xff0c;然后我们运用除法#xff0c;/2#xff0c;结果是几#xff0c;就…876. 链表的中间结点 - 力扣LeetCode 思路 思路首先最容易想到的思路是什么呢就是先遍历一遍链表用一个值count来记录链表的长度然后我们运用除法/2结果是几就是第几个是中间节点但是这种方法其实是需要两个for循环的。还有一个思路就是我们的快慢指针方法这里我们用快慢指针的方法。 易错点 这里我觉得在声明fast和slow时容易出错还有fastfast-next时容易出错首先第一个出错点我觉得在写那个slow时可能会忘记加*对于while循环判断fastfast-next这里呢这里可能会分不清用与还是或这里我们想只要有一个条件不满足就直接跳出循环所以只要有一个为假就跳出循环所以用与就是如果用或||的话就是得满足两个条件才能跳出循环还有就是fast和fast-next不能互换位置否则假如fast为NULL那么怎么能取到fast-NULL呢。 代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/typedef struct ListNode ListNode;
struct ListNode* middleNode(struct ListNode* head) {ListNode* fast,*slow;fastslowhead;while(fastfast-next){slowslow-next;fastfast-next-next;}return slow;
}