今天看啥  ›  专栏  ›  Taec0123

2021/01/24 每日一题 最长连续递增序列

Taec0123  · 简书  ·  · 2021-01-25 10:44

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
   };



原文地址:访问原文地址
快照地址: 访问文章快照