Rise secuencia más larga leetcode 300

Solución dp

int lengthOfLIS (vector < int > & nums) {
         // dp解法O (n ^ 2) 
        int len = nums.size ();
        si (len == 0 )
             de retorno  0 ;
        vector < int > dp (LEN, 1 );
        int maxlen = 1 ;
        para ( int i = 1 ; i <len; i ++ )
        {
            para ( int j = 0 ; j <i; j ++ )
            {
                si (nums [i]> nums [j])
                {
                    dp [i] = max (dp [i], dp [J] + 1 );
                }
            }
            si (dp [i]> maxlen)
                maxlen = dp [i];
        }
        volver maxlen;
    }

 

Más dos descomposición codiciosos

clase de soluciones {
 público :
     int lengthOfLIS (vector < int > & nums) {
         int s = nums.size ();
        si (s == 0 )
             de retorno  0 ;
        int * sta = nuevo  int [s];
        int cnt = 1 ;
        sta [ 0 ] = nums [ 0 ];
        para ( int i = 1 ; i <s; i ++ )
        {
            si (nums [i]> sta [CNT- 1 ])
            {
                sta [cnt] = nums [i];
                cnt ++ ;
            }
            más
            {
                int pos = LOWER_BOUND (sta, sta + cnt, nums [i]) - STA;
                sta [POS] = nums [i];
            }
        }
        volver CNT;
    }
};

 

Supongo que te gusta

Origin www.cnblogs.com/QingFengDaHui/p/12450282.html
Recomendado
Clasificación