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;

    }
相关推荐
Navigator_Z18 分钟前
LeetCode //C - 1248. Count Number of Nice Subarrays
c语言·算法·leetcode
wzdark1 小时前
基于链表的内存池设计与内存复用机制4
java·数据结构·链表
wzdark1 小时前
多维数组在算法设计中的存储映射问题4
算法
Phil3232 小时前
多智能体不是越多越好:Google《Towards a Science of Scaling Agent Systems》论文深度解读
算法
6Hzlia2 小时前
【Classic 150 刷题计划】 LeetCode 26. 删除有序数组中的重复项 | C++ 快慢双指针经典模板
c++·算法·leetcode
huang5791472 小时前
基于滑动窗口的流式数据算法优化思路3
算法
Ulyanov3 小时前
AudioVision Pro:基于 PySide6 + sounddevice 的实时音频可视化播放器设计
python·算法·音视频
土司大王3 小时前
LeetCode hot100——74.搜索二维矩阵:Java 二分模板
java·算法·leetcode
tyler_download3 小时前
揉扁搓圆transformer架构:NAG优化器算法详解
深度学习·算法·transformer
weixin199701080163 小时前
[特殊字符]《京东POP二手品类对接:B2C订单模型 vs 二手C2C属性的字段转换难题》(附Python源码)
前端·python·算法