题目
Given an unsorted array of integers, find the length of longest continuous increasing subsequence (subarray).
Example 1:
Input: [1,3,5,4,7]
Output: 3
Explanation: The longest continuous increasing subsequence is [1,3,5], its length is 3.
Even though [1,3,5,7] is also an increasing subsequence, it's not a continuous one where 5 and 7 are separated by 4.
Example 2:
Input: [2,2,2,2,2]
Output: 1
Explanation: The longest continuous increasing subsequence is [2], its length is 1.
Note: Length of the array will not exceed 10,000.
题意
求最长连续递增子序列(简单dp的应用)
题解
C++代码
class Solution {
public:
int findLengthOfLCIS(vector<int>& nums) {
/*
DP解法
*/
int len = nums.size();
if(len == 0){
return 0;
}
int dp[len], mx = 1;
for(int i=0; i<len; i++){//初始化
dp[i] = 1;
}
for(int i=1; i<len; i++){
if(nums[i-1] < nums[i]){
dp[i] = dp[i-1] + 1;
}
mx = max(dp[i], mx);
}
return mx;
/*
int cnt, mx, len = nums.size(), i;
if(len == 0){
return 0;
}
cnt = mx = 1;
for(i=1; i<len; i++){
if(nums[i-1] < nums[i]){
cnt++;
mx = max(cnt, mx);
}
else{
cnt = 1;
}
}
return mx;*/
}
};
python代码
class Solution(object):
def findLengthOfLCIS(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
n = len(nums)
if n == 0:
return 0
mx = 1
dp = [1 for x in range(0, n)]
for i in range(1, n):
if nums[i-1] < nums[i]:
dp[i] = dp[i-1] + 1
mx = max(dp[i], mx)
return mx