当前位置: 首页 > news >正文

4.8刷题记录(双指针)

今天刷的部分是代码随想录中的双指针专题代码随想录

由于里面包含的题目大部分之前刷过,并且用双指针做过。所以今天仅仅复习,不再进行代码的搬运。

1.19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode)

分析:此题无非就是找到哪个点,然后将其删除即可。所以最大的难度在于如何找到那个点。接下来提供两种思路,第一种两次遍历,找到要删除的前一个。第二个通过双指针,先通过fast找到m位置,slow找到0位置。然后二者同时走n-m个位置,判断条件为fast走向了n即末尾的位置。这时候slow指向的就是n-m即倒数m的位置。

class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        //0.增加一个头节点
        ListNode dimmy=ListNode(0,head);
        //1.首先遍历
        ListNode*p=head;
        int count=0;
        while(p){
            count++;
            p=p->next;
        }
        //2.进行划分,找到前驱节点
        count=count-n;
        p=&dimmy;
        while(count>0){
            count--;
            p=p->next;
        }
        //3.进行删除
        //此时p为前驱节点
        ListNode *temp=p->next;
        p->next=temp->next;
        delete(temp);
        return dimmy.next;
    }
};
//方法二
class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        //0.增加一个头节点
        ListNode dimmy=ListNode(0,head);
        //1.初始化双指针
        ListNode*fast=&dimmy;
        ListNode*slow=&dimmy;
        //2.fast先走n个位置
        while(n>0&&fast&&fast->next){
            fast=fast->next;
            n--;
        }
        // fast=fast->next;
        //3.然后二者一起继续走
        while(fast&&fast->next){
            fast=fast->next;
            slow=slow->next;
        }
        //4.删除结点
        slow->next=slow->next->next;
        //5.输出
        return dimmy.next;
    }
};

http://www.dtcms.com/a/120108.html

相关文章:

  • 15-17手写持久层框架优化
  • 【Linux高级IO(三)】Reactor
  • Java基础编程练习第38题-除法器
  • C++隐式转换的机制、风险与消除方法
  • LLMs之Llama:Llama 4(Llama 4 Maverick Scout)的简介、安装和使用方法、案例应用之详细攻略
  • 基于人工智能的高中教育评价体系重构研究
  • MATLAB2024a超详细图文安装教程(2025最新版保姆级教程)附安装钥
  • 模板方法模式详解
  • Django学习记录-1
  • 利用 schedule 模块在每日上午每 3 秒执行任务
  • 【接口自动化_数据格式与类型】
  • 【C】结构体初始化方法
  • Linux网络多进程并发服务器和多线程并发服务器
  • 全面解析https代理服务器URL
  • Linux | I.MX6ULL外设功能验证(第10天)
  • synchronized锁升级详解
  • Leedcode刷题 | Day27_贪心算法01
  • 机器学习课堂6交叉熵代价函数的逻辑回归模型
  • RNN、LSTM、GRU汇总
  • IDEA 中右侧没有显示Maven
  • ecplise 工具 没有Java EE Tools 选项
  • “乐企“平台如何重构业财税票全流程生态?
  • 拥塞控制和滑动窗口(自己用来面试的)
  • # 决策树与PCA降维在电信客户流失预测中的应用
  • 【后端】ORM / ODM
  • mysql里面的TIMESTAMP类型对应java什么类型
  • 微端服务器
  • 系统思考:问题诊断
  • CCF CSP 第35次(2024.09)(1_密码_C++)(哈希表)
  • CentOS禁用nouveau驱动