LeetCode:链表

链表中环的入口节点

解题思路

记住x = z就行,因此slow和fast相遇时,分别从头结点和相遇节点启动一个步伐一致(1)的指针,其相遇的结点就是入口!

cpp 复制代码
class Solution {
public:
    ListNode* EntryNodeOfLoop(ListNode* pHead) {
        if(pHead == nullptr) return pHead;

        ListNode* slow = pHead;
        ListNode* fast = pHead;

        while(fast != nullptr && fast->next != nullptr){
            slow = slow->next;
            fast = fast->next->next;

            if(slow == fast){
                ListNode* a = pHead;
                ListNode* b = slow;

                while(a != b){
                    a = a->next;
                    b = b->next;
                }
                return a;
            }
        }
        return nullptr;
    }
};

删除链表的倒数第n个节点

思路:【双指针】

step1:给链表添加表头preHead,处理删除掉第一个元素时比较方便;

step2:快指针fast,先在链表上走n步

step3:慢指针slow(指向原始链表头head),代表当前元素;前序节点pre指向添加的表头preHead(删除链表节点时需要pre

step4:slow/fast同步移动,当fast到达链表尾部(NULL),slow正好到了倒数第n个元素位置;

step5:最后将该节点的前序节点pre指针指向该节点next的节点(删掉这个节点);

cpp 复制代码
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        // write code here
        ListNode* preHead = new ListNode(-1);
        preHead->next = head;

        //当前节点
        ListNode* slow = head;
        //前序节点
        ListNode* pre = preHead;

        ListNode* fast = head;

        while(n--){
            if(fast == nullptr){
                return nullptr;
            }
            fast = fast->next;
        }

        while(fast != nullptr){
            fast = fast->next;
            pre = pre->next;
            slow = slow->next;
        }
        pre->next = slow->next;

        return preHead->next;

    }
相关推荐
Interview Aid1128 分钟前
Akuna OA 题目拆解|三题思路复盘
linux·运维·算法·面试·职场和发展
wabs66633 分钟前
关于栈【力扣150.逆波兰表达式求值的思考】
数据结构·c++·算法·leetcode··代码随想录
ZGi.ai34 分钟前
ZGI 父子分块:连接检索片段与完整上下文
人工智能·算法·知识库·企业ai·zgi·父子分块
IT毕设实战小研39 分钟前
基于大数据的二手车数据分析与预测
java·大数据·后端·爬虫·python·算法·课程设计
Allen_LVyingbo43 分钟前
医疗AI可扩展网格信息系统中网格计算技术的智能优化
大数据·人工智能·python·算法·机器学习·django·健康医疗
啦啦啦啦啦zzzz1 小时前
升序链表的定时器
linux·服务器·网络·数据结构·c++·链表
WBluuue1 小时前
数据结构与算法:带权并查集
数据结构·c++·算法
熊猫_豆豆1 小时前
黑洞的粒子产生(霍金1975年论文)第二部分
人工智能·数学·算法·机器学习·量子力学·大学物理·黑洞
jay神1 小时前
本科深度学习需要从零开始训练模型吗?
人工智能·深度学习·算法·机器学习·计算机视觉
Feynman’s boom2 小时前
PDF解析复盘
数据库·人工智能·算法·pdf解析