思路:如果扫描到数组中的第i个数字时,只要我们能记住之前的i-1个数字中的最小值,就能算出在当前价位卖出时可能得到的最大利润。
#include <iostream>
using namespace std;
int main()
{
#define N 8
int a[N] = {9,11,8,5,7,12,16,14}; // 数组长度必须大于等于2
int minVal = a[0];
int minInd = 0;
int maxDiff = a[1] - minVal;
int secInd = 1;
for (int i = 2; i < N; i++) {
if (a[i] - minVal > maxDiff) {
maxDiff = a[i] - minVal;
secInd = i;
}
if (a[i] < minVal) {
minVal = a[i];
minInd = i;
}
}
cout << "买入和卖出的时机:" <<minInd << "," << secInd << endl;
cout << "最大差值:" << maxDiff << endl;
return 0;
}
参考:《剑指offer》