zoukankan      html  css  js  c++  java
  • LeetCode 674. Longest Continuous Increasing Subsequence最长连续递增序列 (C++/Java)

    题目:

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

    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.

    分析:

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

    注意是要找到连续的递增序列,由于需要连续,这道题就变得简单了许多。我们可以创建一个和给定数组同样大小的数组res,用来记录到当前元素递增序列的长度。

    nums 1 3 5 4 7
    res 1 2 3 1 2

    初始化res[0]为1,因为有一个数的话,大小也是1。如果当前元素大于前一个元素,则长度加1,否则,意味着当前元素无法和前面的序列继续构成递增这一条件,我们要计算后面的递增序列的大小,所以重新置为1。遍历完数组后,直接返回res中最大值即可。

    当然我们也可以不适用数组来存储,可以发现比较数组元素是否递增时,如果保持递增,序列长度加1,那么我们可以创建两个变量,一个用来保存当前的递增序列长度,如果下一个元素符合条件,就加1,否则就重新置为1,另一个变量用来保存最终解,每一次更新当前递增序列长度,都和最终解比较大小,将大的值赋给最终解。

    nums 1 3 5 4 7
    temp 1 2 3 1 2
    res 1 2 3 3 3

    程序:

    C++

    class Solution {
    public:
        int findLengthOfLCIS(vector<int>& nums) {
            if(nums.size() == 0) return 0;
            int res = 1;
            int max_temp = 1;
            for(int i = 1; i < nums.size(); ++i){
                if(nums[i] > nums[i-1])
                    ++max_temp;
                else
                    max_temp = 1;
                res = max(res, max_temp);
            }
            return res;
        }
    };

    Java

    class Solution {
        public int findLengthOfLCIS(int[] nums) {
            if(nums.length == 0) return 0;
            int res = 1;
            int maxTemp = 1;
            for(int i = 1; i < nums.length; ++i){
                if(nums[i-1] < nums[i])
                    ++maxTemp;
                else
                    maxTemp = 1;
                res = Math.max(res, maxTemp);
            }
            return res;
        }
    }
  • 相关阅读:
    [转]人生以快乐为本
    不用iTunes也能添加音乐到iPod
    设计很有意思的U盘
    PhotoFunia 在线生成趣味图片
    [转]关于项目管理的一点杂感
    MVC视频序列和Demo的下载地址
    视频测试序列的下载地址
    fatal error LNK1104: 无法打开文件“LIBC.lib”错误
    ORACLE数据库性能优化概述
    oracle常用hint
  • 原文地址:https://www.cnblogs.com/silentteller/p/11674831.html
Copyright © 2011-2022 走看看