双指针算法———C++

首先说明双指针,何为双指针顾名思义就是序列中有两个指针来分别配合调控遍历这序列。

与其生硬讲解,不如举个例子。

例题:给定一段序列,里面有一些单词,并且每个单词都是以空格隔开。

题目要求是将每个单词为一行重新输出。

样例:ade scs sqq

共有三个单词,期望的输出是

ade

scs

sqq

这里我们就可以使用双指针算法来调控了,我们可以利用两个指针分别指向每个单词的起始和末尾,然后使用相应的下标去遍历题目给出的序列。

#include<iostream>
#include<string.h>
using namespace std;int main()
{char str[1000];gets(str);int n=str.size();for(int i=0;i<n;i++){int j=i;while(j<n && str[j]!=' ') j++;for(int k=i;k<j;k++) cout<<str[k];cout<<endl;i=j;}return 0;
}

通过我们可以通过这个题知道使用双指针算法的前提一定是具有单调性

接下来我们来看一个例题:https://www.acwing.com/problem/content/801/

本题是要求寻找最长的连续不重复子序列,有单调性,可以使用双指针算法来完成。

本题的解题思路是寻找右指针i的左边最长的不重复子序列。

#include<iostream>
using namespace std;const int N=1e5+10;
int a[N],s[N];int main()
{int n;cin>>n;for(int i=0;i<n;i++){scanf("%d",&a[i]);}int ans=0;for(int i=0,j=0;i<n;i++){s[a[i]]++;while(j<=i && s[a[i]]>1){s[a[j]]--;j++;}ans=max(ans,i-j+1);}cout<<ans;return 0;
}

https://www.acwing.com/problem/content/802/

#include<iostream>
using namespace std;const int N=1e5+10;
int a[N],b[N];int main()
{int n,m,x;scanf("%d%d%d",&n,&m,&x);for(int i=0;i<n;i++) scanf("%d",&a[i]);for(int i=0;i<m;i++) scanf("%d",&b[i]);for(int i=0,j=m-1;i<n;i++){while(j>=0 && a[i]+b[j]>x) j--;if(a[i]+b[j]==x && j>=0) cout<<i<<' '<<j; }return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/741125.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF制作带图标和文字的按钮模板(通过附件属性实现)

1.界面模板代码部分 <Window.Resources><Style x:Key"IconButton" TargetType"Button"><Setter Property"Template"><Setter.Value><ControlTemplate TargetType"Button"><Border x:Name"borde…

算法D45 | 动态规划7 | 70. 爬楼梯 (进阶) 322. 零钱兑换 279.完全平方数

70. 爬楼梯 &#xff08;进阶&#xff09; 这道题目 爬楼梯之前我们做过&#xff0c;这次再用完全背包的思路来分析一遍 代码随想录 Python: 翻译成背包问题&#xff0c;即&#xff1a;在容量为n的背包里&#xff0c;装入重量为1/2的物品&#xff0c;可以重复利用物品&#x…

快速安装mysql 5.7 服务步骤(包含clinet)及常见问题

1、centos上如何安装MySQL&#xff1a; 1.1.下载并安装mysql yum Repo&#xff1a; # 下载 wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm # 安装 rpm -ivh mysql57-community-release-el7-9.noarch.rpm 1.2.进入yum.repos.d目录&#xff0c;安…

C语言每日一题(63)复写零

题目链接 力扣网 1089 复写零 题目描述 给你一个长度固定的整数数组 arr &#xff0c;请你将该数组中出现的每个零都复写一遍&#xff0c;并将其余的元素向右平移。 注意&#xff1a;请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上述修改&#xff0c;不…

【C++ Primer Plus学习记录】简单文件输入/输出

有时候&#xff0c;通过键盘输入并非最好的选择。例如&#xff0c;假设您编写了一个股票分析程序&#xff0c;并下载了一个文件&#xff0c;其中包含1000种股票的价格。在这种情况下&#xff0c;让程序直接读取文件&#xff0c;而不是手工输入文件中所有的值&#xff0c;将方便…

惬意了解 —— 前端发展史

下拉底部&#xff0c;参与投票&#xff5e;&#xff5e; 前端发展史&#xff1a;从洪荒时代到现代 前端开发已经走过了将近20年的历程&#xff0c;从最早的纯静态页面到如今的现代前端框架&#xff0c;我们见证了前端技术的蓬勃发展。让我们一起回顾这段历史。 洪荒时代&…

深入联合文件系统

Union File System&#xff08;联合文件系统&#xff0c;UnionFS&#xff09;是一种轻量级的高性能分层文件系统&#xff0c;它支持将文件系统中的修改信息作为一次提交&#xff0c;并层层叠加&#xff0c;同时可以将不同目录挂载到同一个虚拟文件系统下&#xff0c;应用看到的…

2024年A特种设备相关管理(锅炉压力容器压力管道)证考试题库及A特种设备相关管理(锅炉压力容器压力管道)试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年A特种设备相关管理&#xff08;锅炉压力容器压力管道&#xff09;证考试题库及A特种设备相关管理&#xff08;锅炉压力容器压力管道&#xff09;试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#…

【天池课堂】零基础入门数据挖掘-课程汇总

写在前面&#xff1a; 如果你现在很迷茫&#xff0c;但是又对数据挖掘感兴趣&#xff0c;建议先看看以下两个视频直播&#xff0c;两位大佬亲身讲述自己和数据挖掘的前世今生。 《如何入门数据挖掘竞赛》 鱼遇雨欲语与余。天池明星选手&#xff0c;武汉大学硕士&#xff0c;天…

前端框架的演进之路:从静态网页到现代交互体验的探索

前端框架的发展史 随着互联网的快速发展&#xff0c;前端技术也在不断进步&#xff0c;前端框架作为前端开发的重要工具&#xff0c;经历了从简单到复杂、从单一到多元的演变过程。本文将回顾前端框架的发展史&#xff0c;探讨其变迁背后的原因和趋势。 一、静态网页时代 在…

不同的二叉搜索树 01背包

96.不同的二叉搜索树 力扣题目链接(opens new window) 给定一个整数 n&#xff0c;求以 1 ... n 为节点组成的二叉搜索树有多少种&#xff1f; dp[3] dp[2] * dp[0] dp[1] * dp[1] dp[0] * dp[2] dp[i] &#xff1a; 1到i为节点组成的二叉搜索树的个数为dp[i]。 dp[i] d…

Vivado2021及以下版本 HLS生成IP核报错的解决方案

摘要&#xff1a;生成 HLS ip的时候会报错&#xff0c;无法生成&#xff1b;原因是2021及以下的版本都会有时间错误的问题&#xff0c;所以要用官方的补丁包&#xff0c;但是打了补丁包有时候也会没用 一、打补丁 以下是xilinx提供的解决办法&#xff1a; Export IP Invalid …

振弦采集仪在岩土工程施工质量监控中的应用案例分析

振弦采集仪在岩土工程施工质量监控中的应用案例分析 河北稳控科技振弦采集仪是一种用来监测振动的仪器设备&#xff0c;可以通过采集振弦信号来分析结构的振动特性。在岩土工程施工质量监控中&#xff0c;振弦采集仪可以用于以下几个方面的应用。 1. 地基与基础工程监测&#…

11.Java---语法总结之一个小项目

图书管理系统 Java学习了很久了,今天将运用之前学习的所有东西整理做个小小的小项目. 1.首先是各种包和操作方法建好 2.然后是项目的大框架搭好 3.然后就开始实现各个部分了 看看最后的运行结果吧! 管理员测试 1.登录&显示图书的运行结果 2.查找&新增图书的运行结…

【黑马程序员】python函数

文章目录 函数什么是函数为什么学习函数函数定义函数的传入参数函数的返回值返回值基础None返回值 函数说明文档函数的嵌套调用定义代码示例 全局变量和局部变量全局变量global变量局部变量 函数综合案例 函数 什么是函数 组织好的&#xff0c;可重复使用的、用来实现特定功能…

图像分割损失函数

为什么要乘以2&#xff0c;是为了让DICE的值域在0和1之间 优化&#xff1a;两种LOSS相加 Focus loss:

【PLSQL】plsqldeveloper查询结果记录显示不全

plsql版本号为12或13。 例如scott用户的emp表中共有14条数据&#xff0c;但select * from emp;查询结构只显示13条记录&#xff0c;如下&#xff1a; 这是由于查询结果显示条数&#xff0c;根据查询框高度自动计算可以显示多少条记录&#xff0c;如果想显示全&#xff0c;则需…

每天一个数据分析题(二百零四)

以下哪些描述准确地解释了极大似然估计方法和其在参数估计中的应用&#xff1f; A. 极大似然估计是一种基于已知结果推测模型参数的最可能值的方法。 B. 在极大似然估计中&#xff0c;我们通常对似然函数取自然对数&#xff0c;以简化乘法运算为加法。 C. 极大似然估计只适用…

阿里云领盲盒活动

阿里云每次的活动都很给力&#xff0c;实打实地发东西。 这次是体验 通义灵码 的活动&#xff0c;这个是体验的推广链接 「通义灵码 体验 AI 编码&#xff0c;开 AI 盲盒」 我是在vscode安装的&#xff0c;体验还行&#xff0c;抽奖抽到了马克杯 这个是抽奖的具体步骤 https:…

程序猿成长之路之socket篇-socket通信原理简介

hello,各位小伙伴们大家好&#xff0c;上次以RSA加解密算法介绍作为密码学篇的结尾后&#xff0c;时光飞逝&#xff0c;转眼到了新一年的春季&#xff0c;这次将介绍一下socket通信和编程原理。 什么是socket&#xff08;套接字&#xff09;&#xff1f; socket&#xff08;套…