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

Acwing-基础算法课笔记之基础算法(双指针)

Acwing-基础算法课笔记之基础算法(双指针)

  • 一、双指针算法概念
  • 二、关于双指针的一个问题
    • 三、模板

一、双指针算法概念

双指针(又称尺取法)是一个常用的优化技巧,用来解决序列的区间问题。

两个指针i,j,有两种扫描方向:
1、反向扫描:i、j方向相反,i从头到尾,j从尾到头,在中间相会。
2、同向扫描:i、j方向相同,都从头到尾,可以让j跑在i前面。

同向扫描的两个指针称为“快慢指针”,快慢指针在序列上产生一个大小可变的“滑动窗口”,有灵活性应用。

二、关于双指针的一个问题

问题描述:将单词abc def ghi按列输出出来
输出结果:
abc
def
ghi

#include<iostream>
#include<algorithm>
#include<cstring>
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[j] != ' ') { // 找当前单词的最后一个位置
			j ++
		}
		// 这道问题的具体逻辑
		for (int k = i; k < j; k ++) cout << str[k]; 
		cout << endl;
		
		i = j;
	}
} 

三、模板

for (int i = 0, j = 0; i < n; i ++ )
{
    while (j < i && check(i, j)) j ++ ;

    // 具体问题的逻辑
}
常见问题分类:
    (1) 对于一个序列,用两个指针维护一段区间
    (2) 对于两个序列,维护某种次序,比如归并排序中合并两个有序序列的操作

http://www.kler.cn/a/547760.html

相关文章:

  • 系统不是基于UEFI的win11,硬盘格式MBR,我如何更改为GPT模式添加UEFI启动?
  • 借助天工AI 生成产品彩页体验 (5G 远距CPE产品彩页)
  • Centos搭建python环境
  • 【Qt】之【Linux】linux下实现开机自启Qt应用程序
  • 获取网站君子协议(robots协议)
  • 深入解析HTTP OPTIONS请求与JAX-RS实现
  • Kotlin 优雅的接口实现
  • 【Logistic Regression】机器学习中的基础分类模型
  • SpringAI集成DeepSeek实战
  • 【信息学奥赛一本通 C++题解】1258:【例9.2】数字金字塔
  • 鸿蒙next开发-struct如何封装共用模块
  • vue若依框架dicts中字典项的使用:表格展示与下拉框示例
  • C++ 中的栈与堆:区别与使用场景详解
  • 如何设置 Nginx 连接超时并进行测试(Nginx优化)
  • 何须付费免费它不香吗
  • Python 多项式拟合
  • 自动驾驶---如何打造一款属于自己的自动驾驶系统
  • Bob the Canadian
  • 尚硅谷课程【笔记】——大数据之Hadoop【一】
  • Communications link failure异常分析解决