当前位置: 首页 > 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是一个基于…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...