
Python
1. 初始化两个变量start和end,分别表示单调递减区间的起点和终点。初始时,start和end都为0。
2. 遍历数组,从第二个元素开始,比较当前元素与前一个元素的大小。
3. 如果当前元素小于等于前一个元素,说明当前元素属于单调递减区间,将end设为当前位置。
4. 如果当前元素大于前一个元素,说明当前元素不属于单调递减区间,将start和end都设为当前位置。
5. 重复2-4步,直到遍历完整个数组。
6. 最终,单调递减区间的起点为start,终点为end。
示例代码如下:
Python
def find_decreasing_intervals(nums):
n = len(nums)
start, end = 0, 0
intervals = []
for i in range(1, n):
if nums[i] <= nums[i-1]:
end = i
else:
if start != end:
intervals.append((start, end))
start, end = i, i
if start != end:
intervals.append((start, end))
return intervals
示例输入:
Python
nums = [3,2,1,4,2,5,3,1,6,7,5,4]
print(find_decreasing_intervals(nums))
输出:
Python
[(0, 2), (4, 4), (6, 7), (10, 11)]
解释:该数组中,分别有四个单调递减区间[3,2,1]、[4]、[3,1]和[7,5,4]。它们的起点和终点分别为(0, 2)、(4, 4)、(6, 7)和(10, 11)。
Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号