c_cpp 876.链接清单的中间位置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 876.链接清单的中间位置相关的知识,希望对你有一定的参考价值。

//自己的思路:首先遍历一遍进行计数,然后直接访问到中值即可

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* middleNode(ListNode* head) {
        ListNode* p = head;
        ListNode* q = head;
        int num = 0;
        while(p->next != NULL){
            p = p->next;
            num++;
        }
        
        num += 1;
        
        num /= 2;
        
        while(num > 0){
            q = q->next;
            num--;
        }
        return q;
    }
};
//大神思路,使用快慢指针同时进行
class Solution {
public:
    ListNode* middleNode(ListNode* head) {
        ListNode *slow = head, *fast = head;
        while (fast && fast->next)
            slow = slow->next, fast = fast->next->next;
        return slow;
    }
};

以上是关于c_cpp 876.链接清单的中间位置的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 234.回文链接清单

c_cpp 206.反向链接清单

c_cpp 循环链接清单实施

c_cpp 206.反向链接清单 - 简单 - 2018.7.31

c_cpp 92.反向链接清单II - 中 - 2018.7.31

876. Middle of the Linked List - LeetCode