首页 > 其他分享 >双指针+回文数组

双指针+回文数组

时间:2025-01-16 22:44:22浏览次数:1  
标签:const int long while solve 数组 using 回文 指针

https://codeforces.com/problemset/problem/1610/B

#include<bits/stdc++.h>
using namespace std;

#define endl '\n'
using ll = long long;
using pii = pair<int, int>;
const double PI = acos(-1);
const int N = 2e5+10;
const int mod = 1e9 + 7;
int a[N];
void solve() {
	int n;cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i];
		int l=1,r=n;
		int x=0,y=0;
		bool flag=0;
		while(l<r){
			if(a[l]==a[r]){
				l++;
				r--;
			}
			else{
				x=a[l];
				y=a[r];
				flag=1;
				break;
			}
		}
		if(!flag){
			cout<<"YES"<<endl;
			return;
		}
		l=1,r=n;
		bool flag1=0,flag2=0;
		while(l<r){
			if(a[l]==a[r]){
				l++;
				r--;
			}
			else{
				if(a[l]==x) l++;
				else if(a[r]==x) r--;
				else {
					flag1=1;
					break;
				}
			}
		}
		l=1,r=n;
		while(l<r){
			if(a[l]==a[r]){
				l++;
				r--;
			}
			else{
				if(a[l]==y) l++;
				else if(a[r]==y) r--;
				else {
					flag2=1;
					break;
				}
			}
		}
		if(flag1==1&&flag2==1){
			cout<<"NO"<<endl;
		}
		else cout<<"YES"<<endl;
}


int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr), cout.tie(nullptr);
	
	int T = 1;
	cin>>T;
	while (T--) {
		solve();
	}
	
	return 0;
}

标签:const,int,long,while,solve,数组,using,回文,指针
From: https://www.cnblogs.com/laileou/p/18675867

相关文章

  • python 按时间戳删除32×32数组的前2列和后9列(批量处理多个txt)
    前面是单个txt这次批量处理多个txt将所得结果保存到另一个文件夹Python首先处理一个txt内容中多个时间戳,每个时间戳\d{4}-\d{2}-\d{2}\d{2}:\d{2}:\d{2}$对应32行×32列数组,删除数组前2列和后9列。其次采用第一步方法,批量处理某文件夹内所有txt文件,将结果批量存到另一个文件......
  • C语言数据结构编程练习-用指针创建顺序表,进行创销和增删改查操作
     使用多文件进行编程main.c文件#include"02.h"intmain(){ fn2(); return0;} 02.h 头文件#pragmaonce#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<memory.h>#defineMAX_NUMBER100typedefi......
  • 4. rust基础Vec-可变数组
    Vec基本知识定义Vec是一个存储堆分配的数据类型,可以动态改变大小。你可以将元素推送到Vec中,或者从其中删除元素。动态大小不像数组([T;N])那样大小固定,Vec的大小在运行时是可变的。你可以向Vec添加元素,也可以删除元素,甚至将它的容量增加或减少。如何使用Vec1.......
  • 全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之一维数组(应用二)
    实战训练1—统计相同的数问题描述:在一次实验中产生了n个数据,现在统计这n个数据中与指定数字m相同的个数,请编程实现。输入格式:输入共三行:第一行为一个整数n,表示整数序列的长度(n<=100);第二行为n个整数,整数之间以一个空格分开;第三行包含一个整数,表示指定的数字m。输出格式:输......
  • 数组的定义和初始化
    数组的定义和初始化publicclassarrayDemo01{publicstaticvoidmain(String[]args){//1.声明数组int[]nums;//intnums02[];不常用//2.创建nums=newint[10];//可以存放十个Int类型的数字//1,2两个步骤可......
  • 数组的简单操作
    数组的简单操作publicclassarrayDemo03{publicstaticvoidmain(String[]args){int[]array={1,2,3,4,5};//打印数组元素for(inti=0;i<array.length;i++){System.out.println(array[i]);}//......
  • Linux驱动开发:处理空指针错误,ERR_PTR、IS_ERR、PTR_ERR用法
    免责声明:本文内容摘自《Linux设备驱动开发》一书,作者为JohnMadieu,译者为袁鹏飞、刘寿永,由人民邮电出版社出版。本文仅为分享知识和讨论之用,非商业用途。书籍版权归原作者及出版社所有。本人及本博客不对因使用或误用本文内容而产生的任何后果负责。请读者尊重版权,合理使用内容。......
  • 【LeetCode 刷题】数组-模拟-螺旋矩阵
    此博客为《代码随想录》数组章节的学习笔记,主要内容为数组模拟的相关题目解析。文章目录59.螺旋矩阵II54.螺旋矩阵59.螺旋矩阵II题目链接classSolution:defgenerateMatrix(self,n:int)->List[List[int]]:l,r,t,b=0,n-1,0,n-......
  • 【LeetCode 刷题】数组-滑动窗口
    此博客为《代码随想录》数组章节的学习笔记,主要内容为滑动窗口知识点的相关题目解析。文章目录209.长度最小的子数组904.水果成篮76.最小覆盖子串209.长度最小的子数组题目链接classSolution:defminSubArrayLen(self,target:int,nums:List[int])->......
  • Rust程序Vec中存储的一般都是Box动态指针吗?
    Rust程序Vec中存储的一般都是Box动态指针吗?UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU在Rust中,Vec<T>不是专门存储Box<T>或其他动态指针,而是存储类型T的值。具体来说,Vec<T>会按照值的类型T来管理数据,它通常使用堆分配内存来存储数据(对于较大的数据或当数据需要动态增长时......