【蓝桥杯国赛】双指针

适用于以下的情境:

① 数组 / 字符串中,有多少个满足情况的连续区间。

② 数组 / 字符串,合并。


【第十三届pythonB组试题:近似gcd】

1. 题目描述

2. 难度:⭐⭐⭐⭐

3. 思考分析:

具体参考:第十三届蓝桥杯国赛 C++ C组 F 题、Python B组 E 题------近似GCD(AC)_蓝桥杯python,bc组的题一样吗?-CSDN博客

① tmp 记录上一个不满足条件的数的位置。

② 设置 right 作为区间到达的最远处;若碰到不满足情况的数字,指针 left=tmp+1,使其始终满足"每个区间内至多一个不满足条件的数字"。

③该区间的长度,即为区间的数目。

复制代码
import math

n, g = map(int, input().split())
ans = list(map(int, input().split()))

res = 0
tmp = -1 #记录上一个不符合条件的数
left, right = 0, 0
for right in range(n):
    t = math.gcd(g, ans[right])
    #自始至终只能保证有一个不符合条件的数在区间内
    if t!=g:
        left = tmp + 1
        tmp = right
    if right-left+1>=2:
        res += right - left
print(res)

【第十届JavaB组试题:最长子序列】

1. 题目描述

2. 难度:⭐

3. 思考分析:

分别用 a, b 两个指针指向两个字符串,当满足相等情况时,才接着向后移动。

复制代码
s = input()
t = input()

a=0;b=0
ans = 0
while a<len(s) and b<len(t):
    if s[a]==t[b]:
        a += 1
        b += 1
        ans += 1
    else:
        a +=1
print(ans)

【第十四届C/C++B组试题:合并数列】

1. 题目描述

2. 难度:⭐⭐⭐

3. 思考分析

①利用**"双指针"**时,不要改变指针指向的数组的内容;而是选择另一个衡量标准------"当前的数组和是否相等"。

②当使用**"while循环"**时,需格外注意其循环条件:有可能p==n-1,但此时q!=(m-1)且sumA!=sumB。但两个数组的数组和必然是相等的,因此只需要再合并数组余下的数即可。

复制代码
n, m = map(int, input().split())
a = list(map(int, input().split()))
b = list(map(int, input().split()))

p=0;q=0
sumA=0;sumB=0
ans = 0
while p<n and q<m:
    if sumA==sumB:
        sumA += a[p]
        sumB += b[q]
        p+=1;q+=1
    elif sumA<sumB:
        sumA += a[p]
        p += 1
        ans += 1
    elif sumA>sumB:
        sumB += b[q]
        q += 1
        ans += 1
if p==n and q==m:
    print(ans)
else:
    print(ans+(n-p)+(m-q))
相关推荐
Raink老师6 小时前
【AI面试临阵磨枪-79】实时数据 RAG:订单、商家、物流、天气、动态库存
人工智能·面试·职场和发展
Cosolar6 小时前
Chroma向量库面试学习指南
数据库·人工智能·面试·职场和发展·数据库架构
方也_arkling7 小时前
【Java-Day08】static / final / 枚举
java·开发语言
橙淮7 小时前
Spring Bean作用域与生命周期全解析
java·spring
Chengbei117 小时前
一站式源码安全检测工具、云安全 / APP / 小程序源码敏感信息递归多层目录扫描AK、JWT、手机号、身份证等敏感信息
java·开发语言·安全·web安全·网络安全·系统安全·安全架构
llz_1127 小时前
web-第一次课后作业
java·开发语言·idea
秋98 小时前
Java项目运行5天左右自动宕机:系统性定位与解决方案
java·开发语言·python
小江的记录本8 小时前
【JVM虚拟机】垃圾回收GC:垃圾收集器:CMS:核心原理、回收流程、优缺点、废弃原因(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·spring·面试·maven
DIY源码阁8 小时前
JavaSwing学生成绩管理系统 - MySQL版
java·数据库·mysql·eclipse
basketball6169 小时前
C++ NULL 和 nullptr 区别 以及 nullptr 的核心实现
java·开发语言·c++