给定一个未经排序的整数数组,找到最长且连续的的递增序列。
示例 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。
代码实现
C++:
class Solution {
public:
int findLengthOfLCIS(vector<int>& nums) {
if(nums.size() < 2){
return nums.size();
}
//设置两个标志位数,一个记录对比基数,一个记录最大连续长度
int baseNumber = nums[0];
int maxContinuousLength = 0;
int continuousLength = 1; //记录当前连续长度, 等于1,因为自身数也是长度
for(int i=1; i<nums.size(); i++){
if(nums[i] > baseNumber){
continuousLength++;
baseNumber = nums[i];
}
else{
if(continuousLength > maxContinuousLength){
maxContinuousLength = continuousLength;
if(maxContinuousLength >= nums.size()){
return maxContinuousLength;
}
continuousLength = 1;
baseNumber = nums[i];
}
}
}
return maxContinuousLength;
}
};
Python:
class Solution(object):
def findLengthOfLCIS(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
continuousLength = 1
maxContinuousLength = 0
if len(nums) < 2:
return len(nums)
for i in range(1, len(nums)):
if nums[i] > nums[i-1]:
continuousLength += 1
else:
maxContinuousLength = max(maxContinuousLength, continuousLength)
if maxContinuousLength >= len(nums):
return maxContinuousLength
continuousLength = 1
return maxContinuousLength