Leetcode做题笔记 674. 最长连续递增序列

题目描述

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

示例 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,直接遍历数组,如果i位>i-1位,count++,当count大于ans时,更新ans,最后返回ans。
做题时第一次把ans更新放在else里面了,导致遇见整体递增的数组无法更新ans,输出零。改了之后放在外面就好了。不过这样每次都判断一次觉得浪费时间,所以思考了一下,在整个for外面判断一次,用于应对整体递增情况,for里面还是把判断放回else里面。

代码

class Solution {
    public int findLengthOfLCIS(int[] nums) {

        if(nums.length <= 1){
            return nums.length;
        }
        int ans = 0;
        int count = 1;
        for(int i = 1; i <= nums.length-1 ; i++){
            if(nums[i] > nums[i-1]){
                count++;
            }
            else{
                if(count > ans){
                ans = count;
                }
                count = 1;
            }
            
        }
        if(count > ans){
            ans = count;
        }
        return ans;
    }
}

欢迎评论和指正!

你可能感兴趣的:(Leetcode做题笔记,leetcode,java,数据结构)