數據結構-買賣青蛙最大利潤

【題目來自灰灰考研】

 

青蛙題精選)你現在是一個買賣青蛙的 huster。每天的青蛙價格不一樣,prices[i]代表青蛙在第 i 天的價 格,求只做一次交易(買入 1 只,賣出 1 只)能得到的最大收益(你必須先買了青蛙之後才能 賣青蛙)。 

 

時間複雜度要求:O(n) 

#include<iostream>
#include<stdlib.h>
#define MIN 0xc0c0c0c0
#define MAX 0x3f3f3f3f
using namespace std;


int MostProfit(int data[], int n)
{
	int minPrice = MAX;
	int maxProfit = MIN;
	for(int i = 0; i < n; i++)
	{
		/*
			從前向後掃描,假設就在掃描到的那一天進行出售
			則可以知道,要想利潤最大,買的那一天一定是價格最低的,
			所以用當前天的出售的價格去減去當前最低價格就是當前最優解,
			如果這個解比上一步得到的結果更好則進行更新全局最優解 
		*/
		if(data[i] < minPrice)
		{
			minPrice = data[i];
		}
		if(data[i] - minPrice > maxProfit)
		{
			maxProfit = data[i] - minPrice;
		}
	}
	return maxProfit;
}


int main()
{
	int data[] = {4, 1, 2, 3};
	int maxProfit;
	maxProfit = MostProfit(data, 4);
	cout<<"最大利潤爲:"<<maxProfit<<endl;
	return 0;
} 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章