解题思路:
本题思路在于两次循环确定区间边界 把连续问题转化为求区间极值差与区间长度关系问题 相同则连续
注意事项:
参考代码:
# 本题思路在于两次循环确定区间边界 把连续问题转化为求区间极值差与区间长度关系问题 相同则连续 # 本题开始爆超时83 # 优化在于两点 首先对于最大值最小值优化 不需要使用sort模拟排序找极值 通过遍历边记录边判断 # 第二点在于由于N值很大 每次区间[N, N]会浪费很多时间 把j从i开始变为i + 1开始 直接在结果中添加N值 避免查找时间消耗 N = int(input()) InputList = [int(temp) for temp in input().strip().split()] count = 0 for i in range(N): # 初始定义区间开始处为最小最大值 maxValue = InputList[i] minValue = InputList[i] for j in range(i + 1, N): # 连续定义排序后区间最后一个减去区间第一个差值为区间长度 # 在循环过程中找到区间最大值与最小值 if InputList[j] > maxValue: maxValue = InputList[j] elif InputList[j] < minValue: minValue = InputList[j] if maxValue - minValue == abs(i - j): count += 1 print(count + N)
0.0分
1 人评分
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:717 |
简单的a+b (C语言代码)浏览:783 |
人见人爱A+B (C语言代码)浏览:663 |
C语言训练-排序问题<1> (C语言代码)浏览:636 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:1090 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1015 |
wu-理财计划 (C++代码)浏览:907 |
剪刀石头布 (C语言代码)浏览:802 |
C语言程序设计教程(第三版)课后习题8.9 (C语言代码)浏览:897 |
Cylinder (C语言描述+详细分析)浏览:3375 |