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