LeetCode上最长连续递增序列,今天又是简单难度了,可以重拳出击
假设传入数组[1,3,5,4,2,3,4,5]
,人眼倒是可以马上分成[1,3,4]和[2,3,4,5]两段,并且最长的那段长度为4,即返回4
那么程序中间就可以开始遍历,如果出现nums[i + 1] <= nums[i]
的情况,即后一位小于当前位置,那么就是出现了减少或者相等的情况,那么这个递增趋势就是结束了。
需要多设置一个参数用于保存每次断开的时候的最大长度
比如上面这个数组[1,3,5,4,2,3,4,5]
出现这个情况的时候分别是i=2、i=3的时候,即4、2
在程序中设置了一个变量ans
用于保存上一次递增的长度,res
是计数位,从1开始,每次出现nums[i + 1] > nums[i]
的情况res
就自增,然后出现nums[i + 1] <= nums[i]
的情况的时候,就先保存等下次再出现这个情况的时候,就会对比res
和ans
,上次递增的长度和这次递增的长度保存长的那次,并且还要将计数变量初始化
var findLengthOfLCIS = function(nums) {
// 遍历就完事
// 有可能出现中间断开了,后面有出现相连的情况
// 计数位
let res = 1
// 返回结果
let ans = 1
if (!nums.length) return 0
for(let i = 0; i < nums.length; i++) {
// console.log(nums[i]);
if(nums[i + 1] > nums[i]) {
// 后一位大于当前元素的情况
// 计数结果+1
res += 1
} else {
// 当前元素大于等于后一位的情况
// 因为会出现断开的情况,这里保存下结果,然后和断开之后的数据对比
// 如果断开后累加的数据比之前的大,就设置为大的那个
ans = res > ans ? res : ans
// 复原计数位
res = 1
}
}
return ans
};