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%的用户