Here is the question.
Giving the data of stock price for a period, find out the best time to buy and sell this stock.
Some people think it as prediction question, actually it isn't. The soul of this question is giving a int array.
You need to find two position i and j, which a[j]-a[i] is maximum while i < j.
here is one solution provided by one friend from mitbbs which is nice and elegant:
static void BestDay(int[] stockPrices, out int buyDate, out int sellDate)
{
buyDate = sellDate = 0;
int maxDiff = 0, minPrice = stockPrices[0], minPriceDate = 0;
for (int i = 1; i < stockPrices.Length; ++i)
{
int price = stockPrices[i];
int diff = price - minPrice;
if (diff > maxDiff)
{
buyDate = minPriceDate;
sellDate = i;
maxDiff = diff;
}
if (minPrice > price)
{
minPrice = price;
minPriceDate = i;
}
}
}
No comments:
Post a Comment