int f(int ind,int buy, vector<int>& nums ,vector<vector<int>>& dp )
{
if(ind==(nums.size()))
return 0;
if(dp[ind][buy]!=-1)
return dp[ind][buy];
int profit;
if(buy)
profit = max((-nums[ind]+f(ind+1,0,nums,dp)),(f(ind+1,1,nums,dp)));
else
profit = max((nums[ind]+f(ind+1,1,nums,dp)),(f(ind+1,0,nums,dp)));
return dp[ind][buy]=profit;
}
int maxProfit(vector<int>& prices) {
int n = prices.size();
vector<vector<int>> dp(n,vector<int>(2,-1));
return f(0,1,prices,dp);
}
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter