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

双指针算法

目录

双指针算法

最长连续不重复子序列

数组元素的目标和


双指针算法

常见的两种样式:

  • 双指针指向两个不同的区间

  • 双指针指向一个区间的左右两端,这种方式更加常见

双指针算法思想

for(int i=0;i<n;i++)for(int j=0;j<n;j++)O(n^2) 时间复杂度

我们要把这个思想优化,一般利用一些单调性的方式

需求 asd qwe zxc 去掉空格,每个字符串单独一行
要求输出:
asd
qwe
zxc#include<iostream>
#include<string.h>using namespace std;int main()
{char str[100];gets(str);int n = strlen(str);for(int i=0;i<n;i++){int j=i;while(j<n && str[i]!=" ") j++;for(int k=i;k<j;k++) cout<<str[k];cout<<endl;//令i直接移到j的位置,利用的是发现题目中单调性来优化,降低时间复杂度i=j;}return 0;
}

双指针算法模板

for(int i=0,j=0;i<n;i++)                  
{while(j<i && check(i,j)) j++;//每道题目的具遗体逻辑
}for循环遍历i,while依据题意定下j停下的位置,之后题目的具体代码,之后利用i,j之间关系进行优化

最长连续不重复子序列

解题代码

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

数组元素的目标和

解题代码

#include <iostream>using namespace std;const int N = 1e5 + 10;int n, m, x;
int a[N], b[N];int main()
{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 (j >= 0 && a[i] + b[j] == x) cout << i << ' ' << j << endl;}return 0;
}

http://www.lryc.cn/news/270624.html

相关文章:

  • Cucumber-JVM的示例和运行解析
  • OSPF ROUTER-ID-新版(15)
  • 阿里开源大模型 Qwen-72B 私有化部署
  • ubuntu下编译obs-studio遇到的问题记录
  • C++的一些知识
  • 大数据 - 大数据入门第一篇 | 关于大数据你了解多少?
  • C语言——扫雷
  • 计算机网络【DNS】
  • Windows实现MySQL5.7主从复制(详细版)
  • AI 绘画 | Stable Diffusion 视频生成重绘
  • 使用easyexcel对导出表格添加合计行
  • Springcloud Alibaba使用Canal将Mysql数据实时同步到Redis保证缓存的一致性
  • Python入门学习篇(十四)——模块文件操作
  • 【数据结构】排序之交换排序(冒泡 | 快排)
  • AI电商时代开始:阿里能否反杀拼多多
  • STC8H系列单片机入门教程之NVC系列语音播报模块(九)
  • 认识计算机网络——计算机网络的组成
  • 数据的复制
  • 【辐射场】3D Gaussian Splatting
  • 冒泡排序--------(C每日一题)
  • 每日一练:LeeCode-347. 前 K 个高频元素(中) - 【优先级队列】
  • <蓝桥杯软件赛>零基础备赛20周--第11周--贪心
  • PowerShell Instal 一键部署TeamCity
  • 将“渴望“乐谱写入AT24C02并读出播放
  • Vue独立组件开发-动态组件
  • 前端八股文(HTML篇)
  • RivaGAN 水印项目
  • Games101作业5
  • Golang解决跨域问题【OPTIONS预处理请求】
  • 复试 || 就业day05(2023.12.31)算法篇