题目描述
假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?例如,一只股票在某些时间节点的价格为{9,11,8,5,7,12,16,14}。如果我们能在价格为5的时候买入并在价格为16的时候卖出,则能收获的最大利润为11。
解决:
public static int MaxDiff(int[] numbers,int length) {
if(numbers==null || length<2) return 0;//边界
int min=numbers[0];//最小值
int max=numbers[1]-min;//利润
for(int i=2;i<length;i++) {
if(numbers[i-1]<min) {
min=numbers[i-1];//更改最小值
}
int cur=numbers[i]-min;//计算利润
if(cur>max) {
max=cur;
}
}
return max;
}