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

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) 对于两个序列,维护某种次序,比如归并排序中合并两个有序序列的操作

相关文章:

  • css块级元素和行内元素区别
  • 算法【动态规划中使用观察优化枚举】
  • unity学习38:导入角色和动画,实测用脚本控制trigger和动作状态的转换
  • 137,【4】 buuctf web [SCTF2019]Flag Shop
  • 负载测试工具有哪些?
  • 【CSS进阶】常见的页面自适应的方法
  • 【ISO 14229-1:2023 UDS诊断(会话控制0x10服务)测试用例CAPL代码全解析②】
  • AI agent 未来好的趋势:AI医疗影像、智能客服、个性化推荐
  • openmv vs canmv 特征点检测 在线例程对比
  • 高精度四则运算
  • 【stm32】定时器
  • VNC远程控制Mac
  • DataWhale 组队学习 Ollama教程 task2 概念梳理
  • IntelliJ IDEA 接入 AI 编程助手(Copilot、DeepSeek、GPT-4o Mini)
  • Spring 事务及管理方式
  • 你需要了解的远程登录协议——Telnet
  • 236. 二叉树的最近公共祖先
  • 3.2 企业级AI Agent数据科学实战:从数据清洗到模型服务的全链路工业级方案
  • 前端性能优化实战:超大图片秒开方案——图像分割切片技术详解
  • AVA实战开源项目:课程答疑系统J(Vue+SpringBoot) 附源码
  • 江苏疾控:下设部门无“病毒研究所”,常荣山非本单位工作人员
  • 新华时评:博物馆正以可亲可近替代“高冷范儿”
  • 东部沿海大省浙江,为何盯上内河航运?
  • 圆桌丨新能源车超充技术元年,专家呼吁重视电网承载能力可能面临的结构性挑战
  • 因港而兴,“长江黄金水道”上的宜宾故事
  • 上海静安将发放七轮文旅消费券,住宿券最高满800元减250元