876. Middle of the Linked List

原題

  • 題目描述:返回一個鏈表的中間位置,若中間位置有兩個,則返回更後的那個
  • 思路:用快慢指針,慢指針一次移動一步,快指針一次移動兩步,當快指針移動到鏈尾或者爲null時,返回慢指針即可
  • 注:按題目意思應該要按鏈表元素個數的奇偶數來分,當是奇數時,直接返回慢指針,當爲偶數時,應該返回慢指針的下一個元素,但我這代碼不管奇偶都直接返回慢指針,竟然也過了,玄學啊!
/**
  Definition for singly-linked list.

  struct ListNode {
      int val;
      struct ListNode *next;
  };
 **/

struct ListNode* middleNode(struct ListNode* head) {
    struct ListNode *fast=head;
    struct ListNode *slow=head;
    while(fast&&fast->next){
        fast=fast->next->next;
        slow=slow->next;
    }
    return slow; 
}
發佈了80 篇原創文章 · 獲贊 35 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章