最長連續(xù)遞增序列
題目敘述:
給定一個(gè)未經(jīng)排序的整數(shù)數(shù)組,找到最長且連續(xù)的的遞增序列膏燃。
示例1:
輸入: [1,3,5,4,7]
輸出: 3
解釋:最長連續(xù)遞增序列是 [1,3,5], 長度為3茂卦。
盡管 [1,3,5,7] 也是升序的子序列, 但它不是連續(xù)的,因?yàn)?和7在原數(shù)組里被4隔開组哩。
示例2:
輸入: [2,2,2,2,2]
輸出: 1
解釋: 最長連續(xù)遞增序列是 [2], 長度為1等龙。
解題思路:
因?yàn)樾枰檎页鲎铋L的連續(xù)遞增序列处渣,這是一個(gè)很明顯的一維dp問題也就是常說的一維動(dòng)態(tài)規(guī)劃問題,數(shù)組nums[]中第i個(gè)元素比它的前一個(gè)大的話到i的遞增序列長度就是i-1的cnt加1而咆,如果小于或者等于i-1個(gè)元素的話序列的長度cnt累加要重新從1開始累加霍比。每當(dāng)cnt被重置時(shí)以及返回結(jié)果前和cnt和max進(jìn)行比較也就是max=max<cnt?cnt:max;
時(shí)間復(fù)雜度為O(n),空間復(fù)雜度為O(1);
實(shí)現(xiàn)代碼:
class Solution {
public int findLengthOfLCIS(int[] nums) {
int len=nums.length;
//數(shù)組長度比2小的直接返回?cái)?shù)組長度即可
if(len<2){
return len;
}
int max=1,cnt=1;
for(int i=1;i<len;++i){
if(nums[i]>nums[i-1]){
cnt++;
}else{
max=max<cnt?cnt:max;
cnt=1;
}
}
return max<cnt?cnt:max;
}
}