Блог пользователя hackersarkar12

Автор hackersarkar12, история, 4 года назад, По-английски

I tried to solve longest increasing subsequence in top down but only pass few cases i don't know whether it is full right or wrong here is the code which i tried

this question is from leetcode

int lis(vector<int>&nums,int i,int n,int prev,vector<int>& ls){
if(i==n||n==0){
    return 0;
}
if(ls[i]!=-1){
    return 1 ;
 }


   lis(nums,i+1,n,prev,ls);
   if(nums[i]>prev){
     int  num=1+lis(nums,i+1,n,nums[i],ls);

       ls[num]=1;
      return num;
     }
    return 0;
      }





      class Solution {
    public:
      int lengthOfLIS(vector<int>& nums) {
         int  n=nums.size();
          int c;
         vector<int> ls(n+1,-1);

       lis(nums,0,n,INT_MIN,ls);
      for(int i=n;i>=0;i--){
         if(ls[i]!=-1){
           c=i;
             break;
         }
         else{
           c=0;
         }
       }
        if(nums.size()==0){
        return 0;
          }
         else{

       if(c==0){
     return 0;

     }
   else{
   return c;
    } 

     }



         }



       };

I wants to how to write top-down approach of this question and wants to know the solution of this question in c++ can anyone explain me ?

  • Проголосовать: нравится
  • -1
  • Проголосовать: не нравится