您好,欢迎来到星星旅游。
搜索
您的当前位置:首页每天6道题之第二十二题:买卖股票的最佳时机(贪心算法)

每天6道题之第二十二题:买卖股票的最佳时机(贪心算法)

来源:星星旅游

前言

题目描述

解题思路

这道题用贪心算法会比较简单,贪心算法是找出一个个局部最优解,那么通过这些局部最优解再得到全局最优解。
我们注意到题目有这样一句话:你必须在再次购买前出售掉之前的股票,也就是说每次只能进行一次买卖,不等先买两次再卖出。
那么为了使利润最大化,我们要尽量以一个较低价买入,以较高的价格卖出。
将问题分解为局部问题,则是找到当天对应的最大利润,最后得到最大的利润。
(1)首先定义最低价格min_price和最大利润max_profit两个变量
(2)遍历整个股票价格数组:
①将最低价格和当前价格比较,低的为新的最低价格
②将当前价格减去最低价格的值与最大利润比较,高的为新的最大利润。
(3)返回最大利润

代码

int maxProfit(vector<int> &prices){
	//(1)首先定义最低价格min_price和最大利润max_profit两个变量
	int min_price=prices[0];
	int max_profit=0;
	//(2)遍历整个股票价格数组:
	for(int i=1;i<prices.size();i++){
		//	①将最低价格和当前价格比较,低的为新的最低价格
		min_price=min(prices[i],min_price);
		//②将当前价格减去最低价格的值与最大利润比较,高的为新的最大利润
		max_profit+=max(prices[i]-min_price,max_profit);
		
	}
	return max_profit;
}
	

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- stra.cn 版权所有 赣ICP备2024042791号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务