笨蛋難題4 買股票
阿新 • • 發佈:2019-01-09
對於 100%的資料:n<=1000000;
對於 100%的資料:股票價格不超過 1000000000。
題解:
題目給的n過多的話,如果暴力求解,兩個迴圈遍歷,一定會時間超限。從別人那裡看到的做法就是,首先將第一個數儲存下來,記為minn,然後開始迴圈輸入剩餘的n-1個數,迴圈裡進行比較,輸入值為value,首先value與minn作差,差值與cha這個變數進行比較,如果cha<value-minn,那麼就說明我們找到了一個新的最大差值,且value一定是在minn後面的,隨即把這個差值記錄下來賦給cha這個變數。然後value與minn進行比較,如果value<minn,那麼找到了新的最小值minn。不用擔心會出現資料當中會出現最大值在最小值前面出現的情況。因為我們已經有一個變數cha記錄了每一個value之前出現的那個最大差值,所以不需要擔心這個問題。只需要在之後繼續尋找最大差值就好了。
#include <bits/stdc++.h>
using namespace std; int main()
{
// freopen("in.txt","r",stdin);
int n,value,minn,cha=0;
scanf("%d",&n);
scanf("%d",&minn);
for(int i=0;i<n-1;i++)
{
scanf("%d",&value); if(cha<value-minn)
cha=value-minn;
if(minn>value)
minn=value;
}
printf("%d",cha);
return 0;
}