QUESTION:
给定一个未经排序的整数数组,找到最长且连续的的递增序列。
示例 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。
EXPLANATION:
看到题目,首先想到的是一个for循环然后往后寻找nums[i]和nums[i-1],但是发现这样会重复很多的循环,于是想到了采用双指针的形式,这样就能确保只循环了一次。思路:
1.确定left和right
2.循环找到不是递增的位置
3.算出left和right之间的距离,与result进行对比
4.将right赋值给left,同时将right++进入下一次循环
SOLUTION:
class Solution {
public int findLengthOfLCIS(int[] nums) {
int result = nums.length==0?0:1;
int left = 0,right = left+1;
while (right<nums.length){
while (right<nums.length && nums[right]>nums[right-1]) right++;
result = Math.max(result,right-left);
left = right;
right++;
}
return result;
}
}