image.png

思路

连续的,就比较简单了。我自己的贪心做法如下

  1. var findLengthOfLCIS = function(nums) {
  2. // 这个比较简单,贪心法
  3. let count =1
  4. let result =1
  5. for(let i=0;i<nums.length-1;i++){
  6. if(nums[i]<nums[i+1]){
  7. count++
  8. }else{
  9. count =1
  10. }
  11. result =Math.max(result,count)
  12. }
  13. return result
  14. };
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

    动态规划

    var findLengthOfLCIS = function(nums) {
      // 这个比较简单,贪心法
      let dp =new Array(nums.length).fill(1)
      let result =1
    
      for(let i=1;i<nums.length;i++){
          if(nums[i]>nums[i-1]){
              dp[i] =dp[i-1]+1
          }
          result =Math.max(result,dp[i])
      }
    
      return result
    };
    
  • 时间复杂度:O(n)

  • 空间复杂度:O(n)

    连续与不连续的区别

    概括来说:不连续递增子序列的跟前0-i 个状态有关,连续递增的子序列只跟前一个状态有关