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

尺取法(算法优化技巧)

问题和序列的区间有关,且需要操作两个变量,可以用两个下标(指针)i 和  j 扫描区间。

1,反向扫描,i 从头,j 从尾,在中间相遇。

例1.1(P37)

找指定和的整数对

#include<bits/stdc++.h>
using namespace std;
const int N=100005;
int n,m;
int a[N];
int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++) cin>>a[i];
	sort(a,a+n);
	int i=0,j=n-1;
	while(i<j){
		int sum=a[i]+a[j];
		if(sum<m) i++;
		if(sum>m) j--;
		if(sum==m){
			cout<<a[i]<<" "<<a[j]<<endl;
			i++;
		}
	}
	return 0;
}

例1.2

判断回文串

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n; cin>>n;
	while(n--){
		string s; cin>>s;
		bool ans =true;
		int i=0,j=s.size()-1;
		while(i<j){
			if(s[i]!=s[j]){ans=false; break;}
			i++,j--;
		}
		if(ans) cout<<"Yes"<<endl;
		else cout<<"No"<<endl;
	}
	return 0;
}

允许删除(或插入,本题只考虑删除)最多一个字符,判断是否能构成回文字符串。

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n; cin>>n;
	bool f;
	while(n--){
		string s; cin>>s;
		bool ans =true;
		f=true;
		int i=0,j=s.size()-1;
		while(i<j&&f){
			if(s[i]!=s[j]&&f){
				f=!f;
				int ii=i+1,jj=j;
				while(ii<jj){
					if(s[ii]!=s[jj]) {ans=false;break;}
					ii++,jj--;
				}
				int i2=i,j2=j-1;
				while(i2<j2){
					if(s[i2]!=s[j2]) {ans=false;break;}
					i2++,j2--;
				}
			}
			if(f)i++,j--;
		}
		if(ans) cout<<"Yes"<<endl;
		else cout<<"No"<<endl;
	}
	return 0;
}

2,同向扫描

2.1 寻找区间和

给定一个长度为 n 的数组和一个数 s ,在这个数组中找一个区间,使这个区间的数组元素之和等于 s 。输出区间的起点和终点位置。


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

相关文章:

  • 前端项目搭建和基础配置
  • 基于海思soc的智能产品开发(高、中、低soc、以及和fpga的搭配)
  • OpenCV基础:获取子矩阵的几种方式
  • 【机器学习实战】kaggle 欺诈检测---使用生成对抗网络(GAN)解决欺诈数据中正负样本极度不平衡问题
  • 【Docker】使用Dev Container进行开发
  • Lora理解QLoRA
  • 瑞利衰落信道机理的详解
  • 利用逻辑回归进行分类
  • 了解MyBatis:一个灵活高效的O/R Mapping解决方案
  • 【博客之星2024】技术洞察:前沿技术趋势与创新实践
  • java项目之陕理工图书馆管理系统的设计与实现源码(ssm)
  • react中,如何使用antd的Row栅格系统使元素左对齐
  • 基于C#实现对象序列化的3种方案
  • 机器人传动力系统介绍
  • 一文读懂iOS中的Crash捕获、分析以及防治
  • 高斯数据库 Shell 脚本:批量执行 SQL 文件
  • C++ 成员初始化列表
  • 二、点灯基础实验
  • Unreal Engine 5 C++ Advanced Action RPG 九章笔记
  • 迅为RK3568开发板篇OpenHarmony实操HDF驱动控制LED-编写内核 LED HDF 驱动程序
  • 搜维尔科技提供完整的人形机器人解决方案以及训练系统
  • 机器学习加州房价预测模型报告
  • 华为数据中心CE系列交换机级联M-LAG配置示例
  • 13-1类与对象
  • 【21】Word:德国旅游业务❗
  • 游戏引擎学习第81天