本文主要是介绍674. Longest Continuous Increasing Subsequence,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
674. 最长连续递增序列
给定一个未经排序的整数数组,找到最长且连续的的递增序列。
示例 1:
输入: [1,3,5,4,7] 输出: 3 解释: 最长连续递增序列是 [1,3,5], 长度为3。 尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。
示例 2:
输入: [2,2,2,2,2] 输出: 1 解释: 最长连续递增序列是 [2], 长度为1。
注意:数组长度不会超过10000。
解法一
//时间复杂度O(n), 空间复杂度O(1)
class Solution {
public:int findLengthOfLCIS(vector<int>& nums) {int n = nums.size();if(n == 0) return 0;int res = 0, start = 0, end;for(end = 1; end < n; end++) {if(nums[end] > nums[end - 1]) continue;res = max(end - start, res);start = end;}return max(end - start, res);}
};
遍历一次,使用start和end记录增序序列的起始位置,用res记录end - start的最大值,遍历完成后返回res即可。注意处理输入元素数为0和1这两种特殊情况。
2019/06/18 22:34
这篇关于674. Longest Continuous Increasing Subsequence的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!