最长连续递增子序列
给定一个未经排序的整数数组,找到最长且连续的的递增序列。
示例 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。
思路
用index游标遍历整个数组来计算curLen再比较得出最大的maxLen即可。
curLen的计算方法:默认最小的连续递增序列长度为1,随着index右移,判断arr[index]是否小于arr[index+1],若是则curLen++,否则重置curLen = 1(意味着游标来到一段新的子序列)
public class 最长连续递增子序列 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = { 11, 1, 9, 2, 5, 7, 3, 4, 6, 8, 10 };
System.out.println(f(arr));
}
private static int f(int[] arr) {
if (arr.length == 0) {
return 0;
}
int maxLen = 1;
int curLen = 1;
for (int i = 0; i < arr.length - 1; i++) {
if (arr[i] < arr[i + 1]) {
curLen++;
} else {
curLen = 1;
}
if (maxLen < curLen) {
maxLen = curLen;
}
}
return maxLen;
}
}