题目要求
给定一个未经排序的整数数组,找到最长且连续的的递增序列。(详情见leetcode-674)
思路
方法1
前提:使用a[j]表示以j下标结尾的连续递增序列的长度,如原子数组为[1,3,5,4,7],则对应的a数组为[1,2,3,1,2],初始值为1
解答:if(a[j]>a[j-1]){a[j] = a[j-1]+1;} else {a[j]=1};
注意:该解法的空间复杂度为O(n),时间复杂度为O(n)
java
class Solution {
public int findLengthOfLCIS(int[] nums) {
int len = nums.length;
if(len==0) return 0;
int[] a = new int[len];
a[0] = 1;
int max = a[0];
for(int i=1;i<len;i++)
{
if(nums[i]>nums[i-1])
{
a[i] = a[i-1]+1;
} else {
a[i] = 1;
}
if(a[i]>max) max = a[i];
}
return max;
}
}
方法2
前提:使用point变量表示以当前值结尾的连续递增序列的长度,初始值为1
解答:if(a[j]>a[j-1]){point++;} else {point=1};
注意:该解法的空间复杂度为O(1),时间复杂度为O(n)
java
class Solution {
public int findLengthOfLCIS(int[] nums) {
int len = nums.length;
if(len==0) return 0;
int point = 1,max=1;
for(int i=1;i<len;i++)
{
if(nums[i]>nums[i-1])
{
point++;
} else {
point=1;
}
if(point>max) max = point;
}
return max;
}
}