题目描述
- 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?例如,一只股票在某时间节点的价格为{9,11,8,5,7,12,16,14}。如果在价格为5的时候买入,16卖出。则能收获最大的利润11。
解题思路
- 该题目即求数组的所有数的最大差值。
- 遍历数组,假设当前遍历第i个数组,用min存储前面i-1个数字的最小值,maxDiff记录当前数字和min的最大差值。遍历完数组后,返回maxDiff即可。
代码
int maxDiff(int[] arr) {
if (arr == null || arr.length <= 0) {
return -1;
}
int min = arr[0];
int maxDiff = 0;
for (int i = 1; i < arr.length; i++) {
if (arr[i] - min > maxDiff) {
maxDiff = arr[i] - min;
}
if (arr[i] < min) {
min = arr[i];
}
}
return maxDiff;
}
网友评论