LeetCode876 連結串列的中間結點
阿新 • • 發佈:2020-07-20
給定一個帶有頭結點head
的非空單鏈表,返回連結串列的中間結點。
如果有兩個中間結點,則返回第二個中間結點。
這個題找規律不難,只用判斷一下長度為1和長度為2的特殊情況就可以了。
注意==運算子的優先順序高於&運算子。
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 enum{Valid,InValid}; 10 int g_middleNode=Valid; 11 class Solution { 12 public: 13 ListNode* middleNode(ListNode* head) { 14 if(head==nullptr){ 15 g_middleNode=InValid; 16 return nullptr; 17 } 18 if(head->next==nullptr) 19 return head; 20 if(head->next->next==nullptr) 21 return head->next; 22 ListNode* mid=head->next; 23 head=head->next->next; 24 int len=3; 25 while(head->next!=nullptr){ 26 head=head->next; 27 ++len; 28 if((len&1)==0) 29 mid=mid->next; 30 } 31 return mid; 32 } 33 };