自学内容网 自学内容网

每日一题&&学习笔记

给你单链表的头结点 head ,请你找出并返回链表的中间结点。

如果有两个中间结点,则返回第二个中间结点。

示例 1:

输入:head = [1,2,3,4,5]
输出:[3,4,5]
解释:链表只有一个中间结点,

提示:

  • 链表的结点数范围是 [1, 100]
  • 1 <= Node.val <= 100

这道题的思路之前在面试金典题2.3就详细讲过,这里就不再过多赘述,直接贴出源码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* middleNode(ListNode* head) {
        if(head->next==nullptr||head==nullptr){
            return head;
        }
        ListNode* l1=head;
        ListNode* l2=head;
        while(l2!=nullptr&&l2->next!=nullptr){
            l1=l1->next; 
            l2=l2->next->next;
        }
        return l1;
    }
};


原文地址:https://blog.csdn.net/m0_73096516/article/details/142603687

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!