股票利益问题一般有两种形式。一种是可以交易多次求最大利益和,一种是只交易一次,求最大的利益。
现在给定一个数组,里面每个数都是正整数,表示每天的股票交易价格。例如数组[7,1,5,3,6,4].其实求解这两种问题的方法类似,先试想一下如果第一天的价格高,那么还需要与后边的比较,如果以后每一天都比前一天高,那么都不买,利益为0。但是对于第一种求最大利益和,我们要求出每次交易可获取的利益。对于第二种只需找到股票交易价格的最低值和最高值就可以了。这两种问题都可以用峰谷图表示。
第一种就是求高峰和山谷之间差值的利益和。第二种是求最低谷值和最高峰值。
第一种:
class Solution{
public static int maxprofit(int []number){
int i=0;
int max=0;
while(i<number.lenght){
while(i<number.length&&number[i]>number[i+1])
i++;
int num1=number[i];
while(i<number.length&&number[i]<=number[i+1])
i++;