674. Longest Continuous Increasing Subsequence

2019-05-26 00:19:20 浏览数 (1)

LWC 49:674. Longest Continuous Increasing Subsequence

Problem:

Given an unsorted array of integers, find the length of longest continuous increasing subsequence.

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记录当前序列的最大连续长度。

代码语言:javascript复制
dp[i] 表示当前位置的最大连续长度

更新:
dp[i] = dp[i - 1]   1 if (前一元素小于当前元素)

代码如下:

代码语言:javascript复制
    public int findLengthOfLCIS(int[] nums) {
        if (nums.length == 0) return 0;
        int[] dp = new int[nums.length];
        Arrays.fill(dp, 1);
        int max = 1;
        for (int i = 1; i < nums.length;   i) {
            if (nums[i] > nums[i - 1]) {
                dp[i] = dp[i - 1]   1;
            }
            max = Math.max(max, dp[i]);
        }
        return max;
    }

此题不一定需要DP,直接用单个变量控制即可。

代码如下:

代码语言:javascript复制
    public int findLengthOfLCIS(int[] nums) {
        int n = nums.length;
        if (n == 0) return 0;
        int max = 1;
        for (int i = 1, k = 1; i < n;   i) {
            if (nums[i] > nums[i - 1]) {
                k   ;
                max = Math.max(max, k);
            }
            else {
                k = 1;
            }
        }
        return max;
    }

0 人点赞