674. Longest Continuous Increasing Subsequence


看了别人int max 后面的比我第三次写的还简洁,没有 if else if 这么乱。

就再思考: for(int i=1;i<a;i++) 肯定是i=0开始,这是traditional;

class Solution {
public:
    int findLengthOfLCIS(vector<int>& nums) {
        int a=nums.size();
        int cnt=1;
        if (a==0) return 0;
        int max=1;
            
        for(int i=0;i<a;i++)
          {
           
              
               if( nums[i+1]<=nums[i])
          
             {
                 if (max<cnt) max=cnt;
                 cnt=1;
             } 
            else  if(i==a-1)
               {
                   
                  if (max<cnt) max=cnt;
               }
            
               else 
               
                cnt=cnt+1;
        
           }  
          return max;
    }
};

不行,判断语句简洁了,逻辑else if 去不掉。

思维定式。!!!

在看了一眼  if (nums[i] < nums[i+1],知道自己的比较方向弄错了。。

class Solution {
public:
    int findLengthOfLCIS(vector<int>& nums) {
        int a=nums.size();
        int cnt=1;
        if (a==0) return 0;
        
        int max=1;
            
        for(int i=0;i<a-1;i++)
          {
               if( nums[i+1]>nums[i])
             {    
                cnt=cnt+1;
                if (max<cnt) max=cnt;
             } 
            else    
                cnt=1;  
           }  
          return max;
    }
};
简洁多了!!!!!!!i=a-1也是试出来的。



看看别人的原版:

Given an unsorted array of integers, find the length of longest continuous increasing subsequence.

Example 1:

Input: [1,3,5,4,7]
Output: 3
Explanation: The longest continuous increasing subsequence is [1,3,5], its length is 3. 
Even though [1,3,5,7] is also an increasing subsequence, it‘s not a continuous one where 5 and 7 are separated by 4. 

 

Example 2:

Input: [2,2,2,2,2]
Output: 1
Explanation: The longest continuous increasing subsequence is [2], its length is 1. 

在未排序的数组中,找出最长递增序列的长度

 

c++(16ms):

 1 class Solution {
 2 public:
 3     int findLengthOfLCIS(vector<int>& nums) {
 4                 int len  = nums.size() ;
 5         if (len < 1)
 6             return 0 ;
 7         int Max = 1 ;
 8         int n = 1 ;
 9         for (int i = 0 ; i < len-1 ; i++){
10             if (nums[i] < nums[i+1])
11                 n++ ;
12             else
13                 n = 1 ;
14             if (n > Max)
15                 Max = n ;
16         }
17         return Max ;
18     }
19 };

max替换在最后,更简洁优美。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值