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

刷题日记—链表—快慢指针的应用

今天刷链表类的题目,碰到了几个快慢指针的题目:
1.删除倒数第k个节点:
题目:image
这个题目没有给size,所以无法遍历,这时候就要借助快慢指针.
代码如下:

class Solution {
public:int kthToLast(ListNode* head, int k) {ListNode* fast=head;ListNode* slow=head;while(k--){fast=fast->next;  //走了k步,指向k+1  }while(fast){ fast=fast->next; //走了n-k步,指向NULL,从k到n要走n-k步,从k+1走向n+1即NULL也要走n-k步//即从a到b要走b-a步slow=slow->next;//走了n-k步,指向n-k+1,恰好是倒数第k个位置}return slow->val;}
};

2.中间节点的删除或返回
题目:image
代码:```cpp
/**

  • 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) {
    ListNode* fast=head;
    ListNode* slow=head;
    while(fast){
    fast=fast->next;
    if(fast==NULL){
    return slow;

    }
    fast=fast->next;
    if(fast==NULL){return slow->next;}
    

    slow=slow->next;

    }
    

    return NULL;

    }
    };

采用快2慢1的方法来获取中间节点,由于快指针走到n时,慢指针恰好走到n/2的位置
http://www.jsqmd.com/news/24065/

相关文章:

  • 【SHADER系列】(四)UGUI 渐变/平滑遮罩 SoftMask
  • 【SHADER系列】(四)UGUI 渐变/平滑遮罩 SoftMask
  • 刷题日记——链表—二进制转十进制,虚拟头结点
  • newDay16
  • Hamiltonian H
  • 透明代理和uups代理,哪个更省gas,为什么
  • 新学期每日总结(第14天)
  • 示性函数引入
  • 2025.10.27
  • go构建streamablehttp mcp服务
  • 算法分析--分治--2.归并排序
  • Vue2随笔-251027
  • Java: Jdk17 异步或同步或并行发邮件
  • Day5div与span标签以及字体实体
  • CCUT应用OJ题解——贪吃的松鼠
  • Java流程控制——Scanner进阶使用
  • go构建sse服务端
  • 结对编程心得
  • 关于结对编程的一些感悟
  • 10.27博客
  • 关联子查询
  • AI概念
  • 工控modBus TCP, 服务端或客户端, 均可以与PHP 通讯
  • 1027
  • 20232421 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • [Mirror] LinuxMirrors: Linux 一键换源项目
  • 10月27日日记
  • 20232326 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 20232429 马成栋 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 做题记录 #4