python leetcode845
时间: 2024-01-28 16:02:08 浏览: 91
leetcode_python
题目leetcode845要求找出数组中的最长山脉的长度。所谓山脉是指先增后减的子数组。给定一个数组A,我们需要返回最长山脉的长度。
解题思路:
1. 定义三个变量:max_len记录最长山脉的长度,start记录山脉的起始位置,end记录山脉的结束位置。
2. 遍历数组A,从第二个元素开始,判断当前元素和前一个元素的关系。
- 如果当前元素大于前一个元素,说明处于递增阶段,将start设为当前元素的索引。
- 如果当前元素小于前一个元素,说明处于递减阶段,将end设为当前元素的索引。
- 如果当前元素等于前一个元素,说明山脉破裂,将start和end都重置为当前元素的索引。
3. 如果start和end都有值且不等于数组的边界值,则计算当前山脉的长度并更新max_len。
4. 遍历完整个数组后,返回max_len作为结果。
以下是Python代码实现:
def longestMountain(A):
max_len = 0
start = 0
end = 0
for i in range(1, len(A)):
if A[i] > A[i-1]:
start = i
elif A[i] < A[i-1]:
end = i
else:
start = i
end = i
if start != 0 and end != 0 and end != len(A)-1:
max_len = max(max_len, end-start+1)
return max_len
输入:A = [2,1,4,7,3,2,5]
输出:5
解释:最长山脉为[1,4,7,3,2],长度为5。
通过以上方法,我们可以求解出数组A中最长山脉的长度。
阅读全文