问题就是一个数组,代表每天的股票价格,买了再卖找到最大的利润值
1.只许买卖一次
动态规划or最小前缀值
public int maximumDifference(int[] nums) {
if (nums.length==0||nums==null)return -1;
int res=-1;int premin=nums[0];
for (int i = 0; i < nums.length; i++) {
if(nums[i]>premin){
res=Math.max(nums[i]-premin,res);
}
else{
premin=nums[i];
}
}
return res;
}
2.买卖多次,但必须是买-卖光-买-卖光
整个问题等价于寻找 x 个不相交的区间,使得利益最大
贪心算法
需要说明的是,贪心算法只能用于计算最大利润,计算的过程并不是实际的交易过程。
public int maxProfit(int[] prices) {
int ans = 0;
int n = prices.length;
for (int i = 1; i < n; ++i) {
ans += Math.max(0, prices[i] - prices[i - 1]);
}
return ans;
}
动态规划
过后补充