题干:

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

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

思路:

核心问题:怎样定义连续递增序列:nums[i] < nums[i+1]

定义好了这个其他的就很简单了,定义一个变量存放数组中连续递增的数量,同时可以看到,这个递增的数量最小是1而不是0

这个题的难度到是非常符合 easy 这个级别,也是我第一个几分钟就做出来的题目,但是还是由于没有定义边界和一个小问题导致了2次失败。

代码:

 // 674
    public static int findLengthOfLCIS(int[] nums) {
        if (nums.length == 0 || nums == null) {
            return 0;
        }
        int lastCount = 1;
        int count = 1;
        for (int i = 0; i < nums.length - 1; i++) {
            if (nums[i] < nums[i + 1]) {
                count++;
            } else {
                if (count > lastCount) {
                    lastCount = count;
                }
                count = 1;
            }
        }
        return Math.max(lastCount, count);
    }

image-20200625160600728

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

最是人间留不住,曾是惊鸿照影来。