leetcode 快慢指针的使用

leetcode刷题——链表(快慢指针/虚拟头节点) leetcode刷题-链表部分 阅读详情
  • 使用方式(head是头指针)
 if(head == nullptr) return head;
        Node* slow = head->next;
        Node* fast = head->next;
        while(fast && fast->next){
            slow = slow->next;
            fast = fast->next->next;
         }

明确快慢指针最后到达的位置:

如果是偶数,如1 2 3 4 5 6,那么slow到达的是4,fast到达的是null;

如果是奇数,如1 2 3 4 5,那么slow到达的是3,fast到达的是5;

题一:链表 检查是够有环 以及环的长度

思路: 快指针、慢指针;如果有环,则快指针一定会与慢指针相遇;且环的初始结点:从头结点一步一步走和从相遇的点一步步走最后相遇的地方。

Node* check(Node* head){
   if(head == nullptr || head->next == nullptr||head->next->next == nullptr){
    return nullptr;
   }
   Node* fast= head->next->next;
   Node* slow = head->next;
   while(fast!=slow){
      if(fast->next!=nullptr && fast->next->next != nullptr){
          fast = fast->next->next;
          slow = slow->next;
      }else{
           return nullptr;
      }
    }
    fast = head;
    while(fast!=slow){
         fast = fast->next;
         slow = slow ->next;
    }
    return slow;

   
}


int length(Node* head){
    Node* myhead =check(head)
    if(!myhead) return 0;
    int cnt = 1;
    Node* p= myhead->next;
    while(p!=myhead){
       p = p ->next;
       cnt++;
    }
    return cnt;
     
}

题二:带有空格的数组,进行翻转,并去除空格

思路:把翻转之后的字符拎到两边

string s = "s e p o";
    int len = s.size();
    int start = 0,  end = len -1;
    int i = 0 , j = len-1;
    while( start < end ){
      if(s[start] == ' '){
          start++;
          continue;
      }
      if(s[end] == ' '){
            end--;
            continue;
      }
      char temp = s[start];
      s[start] = s[end];
      s[end] = temp;
    
      s[i++] = s[start];
      s[j--] = s[end];
      start++;
      end--;
        
    }
    string res = s.substr(0,i)+s.substr(j+1,len-j-1);
    return res;

 

 

 

 

SAP S/4HANA 可扩展性 – 面向初学者的简化指南 可扩展性(Extensibility)是 SAP ECC 和 SAP S/4HANA 的一项关键功能。它使客户能够通过定制其业务流程来创造竞争优势,并使合作伙伴能够通过量身定制的解决方案来丰富核心 ECC 或 S/4HANA。在过去的几十年中,SAP 的 on-premise 版本客户和合作伙伴主要使用经典的 ABAP 扩展性来扩展他们的 ERP 解决方案。经典扩展性允许 ABAP 开发人员使用甚至修改所有 SAP 对象。尽管经典扩展性非常强大和灵活,但在当今的云世界中,它已不再是一个好的选择。 阅读详情

相关推荐

人形机器人触觉革命:压电式电子皮肤的多模态感知与自修复技术突破

本文深入探讨了压电式电子皮肤如何推动人形机器人的触觉革命。文章分析了其基于压电效应的多模态感知原理,能够灵敏检测压力、振动与温度,并重点介绍了赋予电子皮肤自修复能力的动态共价网络等前沿材料技术,从而极大提升了机器人与物理世界进行精细、安全交互的可靠性与智能化水平。

weixin_29251567的博客 195

快慢指针及其应用

算法学习笔记 --《快慢指针及其应用》前言一、什么是快慢指针二、快慢指针的应用1.引入库2.读入数据总结 前言          计算机算法是一门非常有意思的科学,经常研究算法能激发我们大脑的潜能,使我们的大脑变得越来越灵活,思考问题变得更加敏捷和全面。本文是我学习快慢指针相关知识的一个读书笔记,包含快慢指针的应用例子,及快慢指针在这个例子中的应用为什么会正确的数学证明。在算法方面,我也是一个初学者,以前也没有深入的,专门的

woody218的博客 582

WAVE格式

一.wave格式概述 Wave文件格式是用于多媒体文件存储的Microsoft RIFF(Resource Interchange FileFormat)的一个子集。每一个RIFF文件以一个文件头开始,后面是一系列数据块。Wave文件通常是包含“WAVE”块的RIFF文件。而该“WAVE”块由两个子块组成,称为“fmt”块。“fmt”块用于确定数据格式,并且“data”块包含实际的样本数据,

yejia1280的博客 4390

leetcode之快慢指针

什么是快慢指针? 其实快慢指针类似于走路的速度,快指针走得比较快每次可以走2步,慢指针走得比较慢每次走一步,通常用来判断 判断单链表是否存在环,在有序链表中寻找中位数等等 leetcode-环形链表 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾 连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。 示例...

权世界的博客 586

Aruba CX交换机 初始化配置

Aruba CX 交换机 6000系列 8000系列交换机配置

Harry_Guo 1835

Stata森林图进阶:个性化定制与高级技巧

本文详细介绍了Stata森林图的进阶技巧,包括个性化定制与高级应用。通过meta分析工具如metan命令,用户可以优化字体、颜色、坐标轴等视觉元素,提升森林图的专业性和可读性。文章还提供了黑白印刷设置、高分辨率导出等实用技巧,帮助科研人员制作符合学术出版要求的森林图。

ios99的博客 256

151. 翻转字符串里的单词(快慢指针)

链接 class Solution { public: string reverseWords(string s) { /* 错误的去除空格 int j = 0; while (j < s.length() && s.length() > 0 && s[j] == ' '){ s[j] = s[j+1];//000s->00s->0s->s j

stdleohao的博客 185

ChatGPT and Claude国内使用站点

这篇博客介绍了不同的AI聊天平台和定价信息,主要对比了ChatGPT和Claude两款产品。文章列出了多个提供聊天服务的AI平台,包括RawChat、ChatGPTPlus、ChatOpens、Wildcard和2233.ai等,并提供了每个平台的网页链接和定价详情。特别关注了Claude平台,介绍了其普通账号与会员账号的不同,以及相关的定价信息。此外,还提到了一些虚拟卡定价和服务细节,为用户选择合适的AI服务提供了多种参考。

nisidjndn的博客 1万+

【141】环形链表

leetcode,链表,环形链表,双指针,java

mi_super的博客 197

增量学习入门:概念、代码示例与应用场景

在当今快速变化的数据环境中,传统的机器学习模型往往需要重新训练以适应新的数据。然而,这种方法不仅耗时耗力,还可能导致模型性能的不稳定。增量学习(Incremental Learning)作为一种新兴的学习范式,能够在新数据到来时动态更新模型,而无需重新训练整个模型。本文将详细介绍增量学习的基本概念、代码示例、应用场景以及需要注意的事项。增量学习作为一种高效的机器学习方法,能够在新数据到来时动态更新模型,具有广泛的应用前景。通过本文的介绍,相信你对增量学习有了初步的了解。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 1154

huggingface高速下载模型的实战代码

本文主要介绍了huggingface高速下载模型的实战代码,尤其是无法通过国内源进行下载的huggingface模型,希望能对学习大模型的同学们有所帮助。需要特别说明的是,本文的代码是完全原创的,即能够最大限度利用宽度的速度,而且还能实现断点续传。 文章目录 1. 背景 2. 实战代码

herosunly的博客 29万+

力扣 —— 快慢指针

【代码】力扣 —— 快慢指针。

m0_73557953的博客 183

VS Code下载安装与使用教程

VSCode下载安装与使用教程

weixin_46713695的博客 4万+

【LeetCode力扣】234 快慢指针 | 反转链表 | 还原链表

234. 回文链表 - 力扣(LeetCode)判断回文,就是判断是否是对称的。有些朋友对于数组的回文判断非常熟悉,但是对链表的回文判断可能就无从下手了,其实都一样的。有一种非常简单的方式就是将链表转化成数组,然后就是判断该数组是否回文就可以了,这种方式统称暴力破解法,简单粗暴。下面就来先带着大家看一下这道题的暴力破解法。

Hacynn的博客 1497

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

力扣leetcode 链表的中间结点 快慢指针解法

看完建议自己画个图,这样可以加深理解

普通大学生的博客 319

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

双指针算法之快慢指针(一):力扣【判断链表是否有环】leetcode-141、142

kaui /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: bool hasCycle(ListNode *head) { ListNode *fast,*slow;

比特的一天 2762

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

[Golang]力扣Leetcode—中级算法—数学—快乐数(快慢指针)

[Golang]力扣Leetcode—中级算法—数学—快乐数(快慢指针)

皮埃尔的博客 337

力扣 快慢指针

定义两个指针,一快一慢。慢指针每次只移动一步,而快指针每次移动两步。初始时,慢指针和快指针都在位置。,这样一来,如果在移动的过程中,快指针反过来追上慢指针,就说明该链表为环形链表。指针走过链表末端,说明链表无环,此时直接返回。( 解析: 双指针在环内绕圈直到重合,重合时。同时每轮向前走 1 步。当两指针重合时,说明。循环,可以把快慢指针的初始值都置为。时,有环,且两指针在环中第一次相遇。重新指向链表头部节点,此时。多走了 n 个环的长度,即。多走环的长度整数倍 )。

Mazai-Liu的博客 718

leetcode-快慢指针系列

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。仅仅是为了标识链表的实际情况。如果有环的话,那么兔子和乌龟都会进入环中。这时用「相对速度」思考,乌龟不动,兔子相对乌龟每次只走一步,这样就可以看出兔子一定会和乌龟相遇了。核心点就是当快慢指针相遇的时候,快指针的距离是慢指针的两倍。如果链表中存在环 ,则返回 true。给你一个链表的头节点 head ,判断链表中是否有环。

he_wen_jie的博客 602

leetcode快慢指针法题目汇总

双指针法,分为左右指针和快慢指针两种。其中左右指针在数组中运用较多,可以和滑窗法一起进行汇总:滑窗法运用 而快慢指针一般在链表中运用较多,在反转链表和定位链表节点及链表成环等逻辑中运用比较广泛。 141. 环形链表 逻辑非常简单,只要是环形的链表,那么快慢指针早晚会遇到。 值得注意的一点是,用try…except…来进行异常判定 def hasCycle(self, head): ...

书生的日常 669

LeetCode百题刷001双指针·快慢指针

本文介绍了如何解决LeetCode题目“80.删除有序数组中的重复项II”,要求原地修改数组并确保空间复杂度为O(1)。核心算法采用双指针技术,通过快指针i扫描数组,慢指针k标记有效部分的末尾。由于数组已排序,重复元素连续出现,只需确保每个元素最多保留两次。具体步骤包括:处理边界情况(数组长度≤2时直接返回),初始化慢指针k=2,遍历数组并检查当前元素是否与nums[k-2]相同,决定是否保留。最终,k即为新数组的长度。时间复杂度为O(n),空间复杂度为O(1)。

永远怀着至诚之心拥抱世界 548

【LeetCode】数组——快慢指针【细品套路】

凑合看。

wsygcncxy的博客 372

力扣 142环形链表2 快慢指针法

//此题采用快慢指针法 ListNode *detectCycle(ListNode *head) { int tag=0; ListNode *p1,*p2,*pre; if(head==NULL)//因为下面用到了head->next和head->next->next所以防止空指针必须先判断 ,不然会报空指针错 ...

hhit_lyh的博客 353

【LeetCode】287. 寻找重复数【快慢指针】

题目链接:https://leetcode-cn.com/problems/find-the-duplicate-number/ 题目介绍 给定一个包含n + 1 个整数的数组nums ,其数字都在 1 到 n之间(包括 1 和 n),可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 ,找出 这个重复的数 。 你设计的解决方案必须不修改数组 nums 且只用常量级 O(1) 的额外空间。 测试用例 示例 1: 输入:nums = [1,3,4,2,2] 输出:...

一定要站在自己热爱的生活里闪闪发光 1万+

【力扣打卡系列】快慢指针

坚持按题型打卡&刷&梳理力扣算法题系列,语言为go,Day13。

qq_45734745的博客 938

【leetcode】26,80删除数组中重复的元素 快慢指针

数组的特点决定了删除一个元素必须遍历和覆盖 覆盖的方法最快的就是快慢指针 快慢指针的原理就是 起始相同,指向同一个值 比较快指针当前指向的值和前一个值 比较的值不相同时快慢指针同时移动 遇到相同的元素则向前移动快指针 当快指针所指向的值不和前值相同满足条件时,慢指针和快指针之间的值将会被忽略并且被快指针的值覆盖 知道快指针到达数组结尾 7. 删除排序数组中的重复项 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须

森森猪的博客 291
上一篇: leetcode Insertion Sort List
下一篇: 关于回溯的题目
kotomi_du
博客等级 码龄10年 5粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值