2024蓝桥杯每日一题(双指针)
一、第一题:牛的学术圈
解题思路:双指针+贪心
仔细思考可以知道,写一篇综述最多在原来的H指数的基础上+1,所以基本方法可以是先求出原始的H指数,然后分类讨论怎么样提升H指数。
【Python程序代码】
n,l = map(int,input().split()) a = list(map(int,input().split())) a.sort() res,suml,sumr = 0,0,0 for i in range(n): sumr = n-i if a[i]>sumr: if i==0:break if a[i-1]+1>=sumr+1 and l>=1: sumr+=1 break break if a[i]==sumr: j,c = i,1 if i == 0: break while j+1=c+1: sumr+=1 break if l==0 and a[n-1]==0:print(0) else:print(sumr)
二、第二题:最长连续不重复子序列
双指针模板题
【Python程序代码】
n = int(input()) a = [0] + list(map(int,input().split())) mp = [0]*(100010) res,j=1,1 for i in range(1,n+1): if mp[a[i]]: res = max(res,i-j) while a[j]!=a[i]: mp[a[j]]-=1 j +=1 j += 1 else: mp[a[i]]+=1 res = max(res,i-j+1) print(res)
三、第三题: 数组元素的目标和
解题思路:双指针
双指针模板题
【Python程序代码】
n,m,x = map(int,input().split()) a = list(map(int,input().split())) b = list(map(int,input().split())) j = m-1 res = [] for i in range(n): if a[i]+b[j]x: while j>0 and a[i]+b[j]>=x: if a[i]+b[j]==x: res.append((i,j)) j -= 1 for i in res: print(i[0],i[1])
四、第四题: 判断子序列
解题思路:双指针
双指针模板题
【Python程序代码】
n,m = map(int,input().split()) a = list(map(int,input().split())) b = list(map(int,input().split())) j = 0 for i in range(m): if j==n:break if b[i]==a[j]: j += 1 if j==n:print("Yes") else:print("No")
五、第五题: 日志统计
双指针+滑动窗口模板题
【Python程序代码】
from collections import defaultdict n,d,k = map(int,input().split()) mp = defaultdict(int) a,res = [],[] for i in range(n): ts,id = map(int,input().split()) a.append([ts,id]) a.sort() j,pret = 0,0 for i in range(n): teps,tepd = a[i] if teps - a[j][0]>=d: while teps - a[j][0]>=d: mp[a[j][1]]-=1 j += 1 pret = a[j][0] mp[tepd] += 1 if mp[tepd]>=k: res.append(tepd) res = list(set(res)) res.sort() for i in res:print(i)
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。