876. 链表的中间结点
给定一个头结点为 head 的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
示例 1:
输入:[1,2,3,4,5]
输出:此列表中的结点 3 (序列化形式:[3,4,5])
==================================================
时间复杂度为O(n),空间复杂度为O(1)
class Solution { public: ListNode* middleNode(ListNode* head) { ListNode* h = head; int i = 0; while (head!= nullptr) { i++; head = head->next; } i = i >> 1; while (i > 0) { h = h->next; i--; } return h; } };
看到有一个思路,快慢指针,绝了!又是一个小知识点!