[数组][简单]674.最长连续递增序列


tags:

  • 简单
  • 参考
  • 数组
    flag: green
    style: summer
    date: ‘2019-7-5’

674.最长连续递增序列

如果前面大于后面看做 1,否则看为 0;
类似于 485.最大连续 1 的个数 :485.最大连续1的个数

一、题目

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

  • 示例 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)
链接:https://leetcode-cn.com/problems/longest-continuous-increasing-subsequence
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、解答

思路

  • 标签:遍历

  • 过程:
    count 为当前元素峰值,ans为最大峰值
    初始化 count = 1
    从 0 位置开始遍历,遍历时根据前后元素状态判断是否递增,递增则 count++,递减则 count=1
    如果 count>ans,则更新 ans
    直到循环结束
    时间复杂度:O(N)O(N)

  • 个人解答的精简代码

class Solution {
    public int findLengthOfLCIS(int[] nums) {
        
        if(nums.length <= 1)
            return nums.length;

        //因为至少是一个,所以从1开始
        int ans = 1;
        int count = 1;
        for(int i=0;i<nums.length-1;i++) {
            if(nums[i+1] > nums[i]) {
                count++;
            } else {  
                count = 1;
            }
            ans = count > ans ? count : ans;
        }
        return ans;
    }
}

作者:guanpengchn
链接:https://leetcode-cn.com/problems/two-sum/solution/hua-jie-suan-fa-674-zui-chang-lian-xu-di-zeng-xu-l/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

[外链图片转存失败(img-Qn6XTbvV-1562337385283)($resource/%E6%9C%80%E9%95%BF%E8%BF%9E%E7%BB%AD%E9%80%92%E5%A2%9E%E5%BA%8F%E5%88%97.gif)]

  • 个人解答
class Solution {
     public int findLengthOfLCIS(int[] nums) {
        int max = 0; // 存放最长连续数目
        int length = nums.length;
        int count = 0; //用于计数(当前最大值)
        
        //合法性判断
        if (nums == null || length == 0) {
			return 0;
		}
        if (length == 1) {
			return 1;
		}
        //如果递增就+1,发现不再递增仍然最后要+1
       for (int i = 0; i < length - 1; i++) {
		if (nums[i + 1] - nums[i] > 0) {
			count++;
		}else {
			count++; //刚递减的时候,最后一个递增的数要加进去
			max = max  > count ? max : count;
			count = 0;
		}
	}
         max = max > count++ ? max : count++; //针对数组结束是递增的情况    
        return max;
    }
}

复杂度分析
执行用时 :2 ms, 在所有 Java 提交中击败了96.73%的用户
内存消耗 :42.7 MB, 在所有 Java 提交中击败了33.59%的用户

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值