3105.最长的严格递增或递减子数组:一次遍历
【LetMeFly】3105.最长的严格递增或递减子数组:一次遍历
力扣题目链接:https://leetcode.cn/problems/longest-strictly-increasing-or-strictly-decreasing-subarray/
给你一个整数数组 nums 。
返回数组 nums 中 严格递增 或 严格递减 的最长非空子数组的长度。
示例 1:
输入:nums = [1,4,3,3,2]
输出:2
解释:
nums 中严格递增的子数组有[1]、[2]、[3]、[3]、[4] 以及 [1,4] 。
nums 中严格递减的子数组有[1]、[2]、[3]、[3]、[4]、[3,2] 以及 [4,3] 。
因此,返回 2 。
示例 2:
输入:nums = [3,3,3,3]
输出:1
解释:
nums 中严格递增的子数组有 [3]、[3]、[3] 以及 [3] 。
nums 中严格递减的子数组有 [3]、[3]、[3] 以及 [3] 。
因此,返回 1 。
示例 3:
输入:nums = [3,2,1]
输出:3
解释:
nums 中严格递增的子数组有 [3]、[2] 以及 [1] 。
nums 中严格递减的子数组有 [3]、[2]、[1]、[3,2]、[2,1] 以及 [3,2,1] 。
因此,返回 3 。
提示:
1 <= nums.length <= 501 <= nums[i] <= 50
解题方法:一次遍历
一次遍历能否求出最长严格递增子数组?可以:
变量$cnt$记录当前连续递增长度,新遍历元素仍递增则长度加一,否则更新答案最大值并将长度置为1。
最长严格递减子数组同理,可以和最长递增子数组同时求解。
- 时间复杂度$O(len(nums))$
- 空间复杂度$O(1)$
AC代码
C++
1 | |
End
同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~
千篇源码题解已开源
3105.最长的严格递增或递减子数组:一次遍历
https://blog.letmefly.xyz/2026/11/12/LeetCode 3105.最长的严格递增或递减子数组/