classSolution{publicintmaxProfit(int[] prices){// 做啥:找一个i,j(j > i)且prices[j] > prices[i],使得 max = prices[j] - prices[i]// 用dp做吧int len = prices.length;if(len ==1){return0;}// dp[i]代表当前值之后能遇到的最大值int[] dp =newint[len];dp[len-1]=0;for(int i=len-2;i >=0;i--){dp[i]=Math.max(prices[i+1],dp[i+1]);}int max =0;for(int i=0;i<len-1;i++){max =Math.max(dp[i]- prices[i],max);}return max;}}
更新啦~优化代码
节约了空间,空间复杂度由 O(n) 变成了 O(1)
classSolution{publicintmaxProfit(int[] prices){if(prices.length <2){return0;}int len = prices.length;int max = prices[len -1];int ans =0;for(int i = len -2; i >=0; i--){int nowProfit = max - prices[i];// ans 更新if(nowProfit > ans){ans = nowProfit;}// min 更新if(prices[i]> max){max = prices[i];}}return ans;}}
再次更新
classSolution{publicintmaxProfit(int[] prices){int max = prices[prices.length -1];int res =0;for(int i = prices.length -2; i >=0; i--){max =Math.max(max, prices[i +1]);res =Math.max(max - prices[i], res);}return res;}}
2.解压缩到D:\boost 目录下3.编译bjam(1)从vs2010的工具菜单进入命令提示窗口(单击“开始”按钮,指向“所有程序”,指向“Microsoft Visual Studio 2010”,指向“Visual Studio tools(工具)”,然后单击“Visual Studio 2010 comma…
文章目录题目描述代码 & 思路更新版题目描述
感觉和合并二叉树类似,都是很好进行递归的问题
代码 & 思路
翻转当前结点的左、右结点对当前结点的左、右结点进行翻转函数【自底向上】
/*** Definition for a binary tree node.* public class TreeNode …