第一反应最大利润就是最大差值,想用暴力解法。
不同的是最大利润的低值一定在高值前面,所以第i个数字的最大利润是它与前面最小值的差。
怎么记住这一题
四个字,找最小值,找最小值就要想到 if…min=
剑指Offer从i = 2开始循环,因为maxDiff一开始就赋值为number-min会快一点。
我从 i = 1开始循环,写起来顺畅很多。
int min = numbers[0];
int maxDiff = 0x80000000;
for(int i=1; i<n; i++){
if(numbers[i]<min)
min = numbers[i];
int currentDiff = number[i]-min;
if(currentDiff>maxDiff)
maxDiff = currentDiff;
}
return maxDiff;
找最小值,最大差,都是 if…m= 故有两个if,故这道题的结构是 for…if…if…return… 最后记住for不用从0开始