返回中间节点 力扣 876

简介: 返回中间节点的思想是我们在后边解题中最常用的一种解题方法之一,利用快慢指针可以很好地解决问题,同时还可用用c++中的vector模型转化数组思想解决。解题思路:这里有两种最常规的方法,一种是对其用快慢指针,快的速度刚好是慢的速度的两倍就行,一种是统计总个数,最后除以二。利用链表:时间复杂度(on)空间复杂度(o1)

返回中间节点的思想是我们在后边解题中最常用的一种解题方法之一,利用快慢指针可以很好地解决问题,同时还可用用c++中的vector模型转化数组思想解决。


解题思路:这里有两种最常规的方法,一种是对其用快慢指针,快的速度刚好是慢的速度的两倍就行,一种是统计总个数,最后除以二。


利用链表:时间复杂度(on)空间复杂度(o1)

class Solution {
public:
    ListNode* middleNode(ListNode* head) {
        ListNode* slow = head;
        ListNode* fast = head;
        while( fast && fast->next){
            slow = slow->next;
            fast = fast->next->next;
        }
        return slow;
    }
};

利用数组:把链表中的每个节点放到数组中,统计出来数组中元素的个数除以二就行。

class Solution {
public:
    ListNode* middleNode(ListNode* head) {
        vector<ListNode*>a = {head};
        while(a.back()->next != NULL){
            a.push_back(a.back()->next);
        }
        return a[(a.size()/2)];
    }
};


目录
相关文章
|
6月前
【每日一题Day300】LC2236判断根结点是否等于子结点之和
【每日一题Day300】LC2236判断根结点是否等于子结点之和
33 0
LeetCode | 面试题 02.02. 返回倒数第 k 个节点
LeetCode | 面试题 02.02. 返回倒数第 k 个节点
力扣1496 判断路径是否相交
力扣1496 判断路径是否相交
|
6月前
leetcode-6134:找到离给定两个节点最近的节点
leetcode-6134:找到离给定两个节点最近的节点
49 0
|
6月前
|
算法
面试题 02.02:返回倒数第 k 个节点
面试题 02.02:返回倒数第 k 个节点
30 0
|
6月前
20005.LeetCode 876. 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。
20005.LeetCode 876. 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。
35 0
【Leetcode -2236.判断根节点是否等于子节点之和 -2331.计算布尔二叉树的值】
【Leetcode -2236.判断根节点是否等于子节点之和 -2331.计算布尔二叉树的值】
42 0
删除链表中的节点(力扣)
把后一个节点的值抄过来,删node的下一个节点
34 0
|
C++
返回中间节点 力扣 876
返回中间节点的思想是我们在后边解题中最常用的一种解题方法之一,利用快慢指针可以很好地解决问题,同时还可用用c++中的vector模型转化数组思想解决。 解题思路:这里有两种最常规的方法,一种是对其用快慢指针,快的速度刚好是慢的速度的两倍就行,一种是统计总个数,最后除以二。
73 0
力扣100判断树是否相等
力扣100判断树是否相等
49 0