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

【蓝桥杯集训4】双指针专题(6 / 6)

目录

3768. 字符串删减 - 滑动窗口ac

799. 最长连续不重复子序列 - 滑动窗口

800. 数组元素的目标和 - 二分ac

2816. 判断子序列 - 双指针

1238. 日志统计 - 滑动窗口

1240. 完全二叉树的权值 - 双指针  

1、前缀和 - 通过了 5/12个数据 

2、双指针


3768. 字符串删减 - 滑动窗口ac

3768. 字符串删减 - AcWing题库

题目:

思路:

用双指针l和r,移动r指针

当已经统计了2个x,若下一个字符为x,则需要删除1个x,且滑窗左边界往后移一位

若下一个字符不为x,则统计x个数的cnt清零,缩小滑窗至该非x字符上

import java.util.*;class Main
{public static void main(String[] args){Scanner sc=new Scanner(System.in);int n=sc.nextInt();String s=sc.next();int res=0,cnt=0;for(int l=0,r=0;r<n;r++){char c=s.charAt(r);if(cnt==2&&c=='x'){res++;l++;}else if(c=='x') cnt++;else {cnt=0;l=r;}}System.out.print(res);}
}

799. 最长连续不重复子序列 - 滑动窗口

活动 - AcWing

题目:

给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。

输入样例:
5
1 2 2 3 5
输出样例:
3

思路:

用一个数组统计每个数字出现个数

滑动窗口中如果出现重复数字,则左边界增大缩小滑窗直至不出现重复数字

不断更新最大连续不重复子序列长度

import java.util.*;class Main
{static int N=100010;static int[] st=new int[N];public static void main(String[] args){Scanner sc=new Scanner(System.in);int n=sc.nextInt();int[] a=new int[n];for(int i=0;i<n;i++) a[i]=sc.nextInt();int res=0;for(int l=0,r=0;r<n;r++){st[a[r]]++;while(l<r&&st[a[r]]>1) st[a[l++]]--; //如果滑窗内仍存在重复数字 则缩小滑窗res=Math.max(res,r-l+1);}System.out.print(res);}
}

 

800. 数组元素的目标和 - 二分ac

活动 - AcWing

import java.util.*;class Main
{static int N=100010;static int[] a=new int[N],b=new int[N];public static void main(String[] args){Scanner sc=new Scanner(System.in);int n=sc.nextInt(),m=sc.nextInt(),x=sc.nextInt();for(int i=0;i<n;i++) a[i]=sc.nextInt();for(int j=0;j<m;j++) b[j]=sc.nextInt();for(int i=0;i<n;i++){int t=x-a[i];int l=0,r=m-1;while(l<r){int mid=l+r>>1;if(b[mid]>=t) r=mid;else l=mid+1;}if(b[l]==t){System.out.print(i+" "+l);break;}}}
}

 

2816. 判断子序列 - 双指针

活动 - AcWing

题目:

思路:

用i指针指向a,j指针指向b

遍历b数组,如果a[i]==b[j],则向后移动i指针

如果遍历完,i==n,说明a全部匹配成功,说明a是b的子序列

import java.util.*;class Main
{static int N=100010;static int[] a=new int[N],b=new int[N];public static void main(String[] args){Scanner sc=new Scanner(System.in);int n=sc.nextInt(),m=sc.nextInt();for(int i=0;i<n;i++) a[i]=sc.nextInt();for(int j=0;j<m;j++) b[j]=sc.nextInt();int i=0;for(int j=0;j<m;j++){if(i<n&&a[i]==b[j]) i++;}if(i==n) System.out.print("Yes");else System.out.print("No");}
}

 

1238. 日志统计 - 滑动窗口

活动 - AcWing

题目:

思路:

按时间从小到大顺序排序

枚举时间段,滑动窗口内为合法时间,记录该区间内帖子的赞数

如果在滑窗内且赞数≥k,则为热帖,标记上

import java.util.*;class Main
{static int N=100010;public static void main(String[] args){Scanner sc=new Scanner(System.in);int n=sc.nextInt(),d=sc.nextInt(),k=sc.nextInt();int[][] list=new int[n][2];int[] cnt=new int[N];int[] st=new int[N];for(int i=0;i<n;i++){list[i][0]=sc.nextInt();list[i][1]=sc.nextInt();}Arrays.sort(list,(o1,o2)->{return o1[0]-o2[0];});for(int l=0,r=0;r<n;r++) //滑动窗口是合法时间段 统计滑窗内是否有热帖存在{int id=list[r][1];cnt[id]++;while(list[r][0]-list[l][0]>=d) //超过最大时间段 缩小滑窗{cnt[list[l][1]]--;l++;}if(cnt[id]>=k) st[id]=1;}for(int i=0;i<=100000;i++) if(st[i]==1) System.out.println(i);}
}

 

1240. 完全二叉树的权值 - 双指针  

活动 - AcWing

题目:

1、前缀和 - 通过了 5/12个数据 

看错题了,概念问题,是完全二叉树,看成满完全二叉树了……

完全二叉树,共n层,其中n-1层是满二叉树结构,最后一层所有节点都在最左边

import java.util.*;class Main
{static int N=100010;public static int work(int n){int cnt=0;while(n>1){n/=2;cnt++;}return cnt;}public static void main(String[] args){Scanner sc=new Scanner(System.in);int n=sc.nextInt();int[] a=new int[N];int[] s=new int[N];for(int i=1;i<=n;i++) {a[i]=sc.nextInt();s[i]=s[i-1]+a[i];}int t=work(n+1);t--;int cnt=1,pre=1;int maxx=s[1],res=1;while(t-->0){int r=(int)Math.pow(2,cnt);int sum=s[r]-s[pre];if(maxx<sum){maxx=sum;int tp=work(r+1);res=tp;}cnt++;pre=r;}System.out.print(res);}
}

2、双指针

思路:

枚举每一层的起点和层数

计算每一层的总和 取最大值

import java.util.*;class Main
{static int N=100010;public static void main(String[] args){Scanner sc=new Scanner(System.in);int n=sc.nextInt();int[] a=new int[N];for(int i=1;i<=n;i++) a[i]=sc.nextInt();long maxx=-0x3f3f3f3f;int res=0;for(int i=1,d=1;i<=n;i*=2,d++) //i为起点下标 d为层数{long sum=0;for(int j=i;j<i+(1<<d-1)&&j<=n;j++) sum+=a[j]; //1<<d指将1位二进制数向左移d位 即2^dif(sum>maxx){maxx=sum;res=d;}}System.out.print(res);}
}

相关文章:

【蓝桥杯集训4】双指针专题(6 / 6)

目录 3768. 字符串删减 - 滑动窗口ac 799. 最长连续不重复子序列 - 滑动窗口 800. 数组元素的目标和 - 二分ac 2816. 判断子序列 - 双指针 1238. 日志统计 - 滑动窗口 1240. 完全二叉树的权值 - 双指针 1、前缀和 - 通过了 5/12个数据 2、双指针 3768. 字符串删减 -…...

文件流,gzip解压,压缩

目录 文件画布 写入 &#xff08;空文件Foutnew File(Parent,entry.getName());&#xff09;FileOutputStream outnew FileOutputStream(Fout);BufferedOutputStream Boutnew BufferedOutputStream(out);其他流量基于基础包装文件--文件流---字节流 顺序pbf一般是形成后再压缩目…...

在线开会,来开开圆桌会议吧~

圆桌会议应用场景&#xff1a;适合内部培训、部门会议亦或是头脑风暴等较为轻松的场景&#xff0c;有兴趣的朋友可以联系我来测试哦~~ 上图&#xff1a; 图&#xff1a;圆桌会议应用截图 在圆桌布局之下&#xff0c;企业可以将每一位参会者和座位绑定&#xff0c;1:1模拟线下圆…...

使用营销自动化的 7 大主要优势

对于大多数企业家来说&#xff0c;自动化已成为在数字时代简化业务的必要条件。那么&#xff0c;您可以采取哪些步骤来实施营销自动化呢&#xff1f; 1. 社交媒体整合 拥有吸引人的社交媒体形象是成功的先决条件。您不可能完成所有社交媒体营销任务&#xff0c;使用自动化软件&…...

【图像分类】基于PyTorch搭建GRU实现MNIST手写数字体识别(单/双向GRU,附完整代码和数据集)

写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 在https://blog.csdn.net/AugustMe/article/details/128969138文章中,我们使用了基于PyTorch搭建LSTM实现MNIST手…...

day14_oop_抽象_接口

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、作业 二、抽象 三、接口 零、 复习昨日 多态的好处: 扩展性强.加入新的功能,不需要改动代码降低代码耦合度(解耦合或者松耦合) 一、抽象类 1.1 抽象类…...

模式识别 | MATLAB实现DNN深度神经网络模式分类识别

分类预测 | MATLAB实现DNN全连接神经网络多特征分类预测 目录 分类预测 | MATLAB实现DNN全连接神经网络多特征分类预测基本介绍任务描述程序设计参考资料基本介绍 DNN的结构不固定,一般神经网络包括输入层、隐藏层和输出层,一个DNN结构只有一个输入层,一个输出层,输入层和输…...

【C++】类和对象三大特性--继承

文章目录1.继承的概念及定义1.1继承的概念1.2 继承定义1.2.1定义格式1.2.2继承关系和访问限定符1.2.3继承基类成员访问方式的变化2.基类和派生类对象赋值转换3.继承中的作用域4.派生类的默认成员函数5.继承与友元6. 继承与静态成员7.复杂的菱形继承及菱形虚拟继承虚拟继承解决数…...

MySQL的存储引擎

目录 一.概念 二.分类 操作 修改默认存储引擎 一.概念 数据库存储引擎是数据库底层软件组织&#xff0c;数据库管理系统&#xff08;DBMS&#xff09;使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能。现在许多不…...

工程项目管理系统源码-简洁+好用+全面-工程项目管理系统

​ ​工程项目管理系统是指从事工程项目管理的企业&#xff08;以下简称工程项目管理企业&#xff09;受业主委托&#xff0c;按照合同约定&#xff0c;代表业主对工程项目的组织实施进行全过程或若干阶段的管理和服务。 ​系统定义 工程项目管理企业不直接与该工程项目的总承…...

什么是STAR原则?

文章目录&#x1f4cb;前言&#x1f525;省流版&#x1f3af;什么是STAR原则&#x1f3af;进行过程&#x1f4cb;前言 对于大部分还在学习阶段的学生们来说&#xff0c;可能并不了解这个原则的含义&#xff0c;这里的star并不是指英文单词星星。这个原则我也是前段时间才认识到…...

前置知识-初值问题、显式隐式龙格库塔方法、Butcher阵列

1.1.4 龙格一库塔法 将向前欧拉法写成式 (1-37) 的形式, 可以看出它实际上利用了 f ( x , u ) f(x, u) f(x,u) 在 x n...

PythonWeb Django PostgreSQL创建Web项目(二)

安装数据库PostgreSQL并创建数据库 我第一次尝试使用PostgreSQL数据库&#xff0c;why&#xff1f;我喜欢它提供的丰富的数据类型&#xff0c;例如货币类型、枚举类型、几何类型(点、直线、线段、矩形等等)、网络地址类型、文本搜索类型、XML类型JSON类型等等&#xff0c;非常…...

Python学习笔记:使用字符串

使用字符串 使用字符串格式&#xff1a;精简版 百分号 % # 指定要设置其格式的值时&#xff0c;可使用单个值&#xff08;如字符串或数字&#xff09;&#xff0c;可使用元组&#xff08;如果要设置多个值得格式&#xff09;&#xff0c;还可使用字典 >>> format …...

echarts饼图封装

1. 组件 <template> <div :id"id" class"main" :style"{ width: width, height: height }" :ref"id" ></div> </template> <script> import * as echarts from "echarts"; export default { …...

Web3.0 教学基础一

目录 什么是web3.0 Web 1.0 概念 Web 2.0 概念 Web 3.0 概念 Web 3.0 的优势 什么是DAPP 什么是web3.0 在了解web3.0之前我们需要了解下前面的web1.0与web2.0。 Web 1.0 概念 Web1.0是万维网最初的版本&#xff0c;而静态网站则被认为是全网Web 1.0的起源&#xff0c;用…...

body使用渐变色无效的原因之一:html没有设置高度

直接在css文件中对body设置渐变色&#xff1a; body {height: 100%;background: -webkit-linear-gradient(120deg, #a1c4fd 0%, #c2e9fb 100%);background: -moz-linear-gradient(120deg, #a1c4fd 0%, #c2e9fb 100%);background: -o-linear-gradient(120deg, #a1c4fd 0%, #c2e…...

Python3 函数实例及演示

函数是组织好的&#xff0c;可重复使用的&#xff0c;用来实现单一&#xff0c;或相关联功能的代码段。 函数能提高应用的模块性&#xff0c;和代码的重复利用率。我们已经知道Python提供了许多内建函数&#xff0c;比如print()。但也可以自己创建函数&#xff0c;这被叫做用户…...

HTB打靶(Active Directory 101 Multimaster)

Nmap扫描 Starting Nmap 7.93 ( https://nmap.org ) at 2023-02-08 02:52 EST Stats: 0:00:51 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth Scan SYN Stealth Scan Timing: About 55.85% done; ETC: 02:54 (0:00:40 remaining) Nmap scan report for 10.129…...

漏洞预警|Apache Sling JCR Base 存在JNDI注入漏洞

棱镜七彩安全预警 近日网上有关于开源项目Apache Sling JCR Base 存在JNDI注入漏洞&#xff0c;棱镜七彩威胁情报团队第一时间探测到&#xff0c;经分析研判&#xff0c;向全社会发起开源漏洞预警公告&#xff0c;提醒相关安全团队及时响应。 项目介绍 Apache Sling是一个基于…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...