其他分享
首页 > 其他分享> > lintcode228. 链表的中点

lintcode228. 链表的中点

作者:互联网

找链表的中点。

样例
样例 1:

输入:  1->2->3
输出: 2	
样例解释: 返回中间节点的值
样例 2:

输入:  1->2
输出: 1	
样例解释: 如果长度是偶数,则返回中间偏左的节点的值。	
挑战
如果链表是一个数据流,你可以不重新遍历链表的情况下得到中点么?
/**
 * Definition of singly-linked-list:
 * class ListNode {
 * public:
 *     int val;
 *     ListNode *next;
 *     ListNode(int val) {
 *        this->val = val;
 *        this->next = NULL;
 *     }
 * }
 */

class Solution {
public:
    /**
     * @param head: the head of linked list.
     * @return: a middle node of the linked list
     */
    ListNode * middleNode(ListNode * head) {
        // write your code here
        if(head==NULL) return NULL;
        ListNode *p=new ListNode(0);
        p->next=head;
        ListNode*fast=p;
        ListNode*slow=p;
        while(fast)
        {
            fast=fast->next;
            if(fast){ fast=fast->next;
            slow=slow->next;}
        }
        return slow;
    }
};
Sinb妃 发布了359 篇原创文章 · 获赞 13 · 访问量 1万+ 私信 关注

标签:head,ListNode,lintcode228,样例,fast,next,链表,中点
来源: https://blog.csdn.net/weixin_43981315/article/details/103994202