题目1描述:假设你有一个数组,其中第i个元素表示某只股票在第i天的价格。

设计一个算法来寻找最大的利润。你可以完成任意数量的交易(例如,多次购买和出售股票的一股)。但是,你不能同时进行多个交易(即,你必须在再次购买之前卖出之前买的股票)。

思路:判断相邻是否递增,因为连续递增可以合起来看为一次买入卖出操作,所以统计所有递增量即可。
import java.util.*;


public class Solution {
    /**
     * 
     * @param prices int整型一维数组 
     * @return int整型
     */
    public int maxProfit (int[] prices) {
        // write code here
        if(prices.length<2||prices==null)
            return 0;
        int res=0;
        for(int i=1;i<prices.length;i++){
            if(prices[i]-prices[i-1]>0)
                res+=prices[i]-prices[i-1];
        }
        return res;
    }
}

题目2描述:假设你有一个数组,其中第i个元素是某只股票在第i天的价格。如果你最多只能完成一笔交易(即买一股和卖一股股票),设计一个算法来求最大利润。

思路:找后面售价与前面售价的差值。
代码:
import java.util.*;


public class Solution {
    /**
     * 
     * @param prices int整型一维数组 
     * @return int整型
     */
    public int maxProfit (int[] prices) {
        // write code here
        if(prices.length<2||prices==null)
            return 0;
        
        int res=0;
        for(int i=0;i<prices.length;i++)
            for(int j=i;j<prices.length;j++){
                if(prices[j]-prices[i]>res)
                    res=prices[j]-prices[i];
            }
        return res;
    }
}