. - 力扣(LeetCode). - 備戰技術面試?力扣提供海量技術面試資源,幫助你高效提升編程技能,輕松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/middle-of-the-linked-list/description/
思路1:
?思路2:
代碼:
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/typedef struct ListNode ListNode;
struct ListNode* middleNode(struct ListNode* head) {//快慢指針ListNode* fast = head;ListNode* slow = head;while(fast && fast->next){//慢指針每次走一步slow = slow->next;//快指針每次走兩步fast = fast->next->next;}//此時slow指向的節點剛好就是中間節點return slow;
}
提交結果:
這里輸出3,4,5是因為這是鏈表,返回的時候返回的是3這個節點的地址,3節點的next指針指向的是4節點,以此類推直到某個節點的next指針指向空的時候就不打印。?
快慢指針的原理:
修改循環條件:
當我們把while循環中的兩條表達式交換一下順序,此時代碼會有問題。
原因:
?建議不要修改while循環的順序,這么小的細節找起來太難了。