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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章