
解题思路:双指针+贪心
仔细思考可以知道,写一篇综述最多在原来的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
and a[j+1]==a[i]: - j += 1
- c += 1
- if a[i-1]==a[i] and l>=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]
continue - if a[i]+b[j]==x:
- res.append((i,j))
- continue
- 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)