题解|最长连续递增子序列

最长连续递增子序列

给定一个未经排序的整数数组,找到最长且连续的的递增序列。

示例 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。

LeetCode 674

思路

图片用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;
	}

}

猜你喜欢

转载自blog.csdn.net/a739260008/article/details/86497450
今日推荐