蓝桥杯 连号区间数 Python3 满分解法
前言
最近在准备蓝桥杯记录一下题目的解法~ 和小编一起看一下连号区间数的python3的满分解法吧。在此不说思路了,很简单的,相信可以从代码直接看懂
一、剪枝前 80分
class Solution():
def numSection(self, n,array):
s=0
for left in range(n):
min_value=max_value=array[left]
for right in range(left+1,n):
max_value=max(max_value,array[right])
min_value=min(min_value,array[right])
flag=max_value-min_value
if right-left==flag:
s+=1
return s+n
if __name__ == "__main__":
solution = Solution
n=int(input())
array=[int(i) for i in input().split()]
result = solution.numSection(solution,n,array)
print(result)
二、剪枝后:100分
class Solution():
def numSection(self, n,array):
s=0
for left in range(n):
min_value=max_value=array[left]
for right in range(left+1,n):
max_value=max(max_value,array[right])
min_value=min(min_value,array[right])
flag=max_value-min_value
if right-left==flag:
s+=1
#只要添加这么一句就行
if flag+1>right-left+1+n-1-right:
break
return s+n
if __name__ == "__main__":
solution = Solution
n=int(input())
array=[int(i) for i in input().split()]
result = solution.numSection(solution,n,array)
print(result)