最大收益

原创 2016年06月01日 16:02:19
/*
   Say you have an array for which the ith element is the price of a given stock on day i.


   If you were only permitted to complete at most one transaction (ie, buy one and sell one share of the stock), design an algorithm to find the maximum profit.
 */


题意:
给定一系列价格(每天的),计算出最多能赚到多少钱,而且只能买卖一次。


多赚钱的原则就是低买高买,但要注意卖出一定要在买入之后。


* 方法一:只需要遍历一次价格。min=max=prices[0],不断置换最大的价格max,当出现比min小的价格时,计算这一轮的最大收益即max-min,如果比之前的收益更大,就更新最大收益。然后,重置min=price[i],max=min,开始新一轮的计算。最后,把max-min跟最大收益比较,返回最大收益。



#include <stdio.h>


int maxProfit(int* prices, int pricesSize) {
int min = prices[0], max = min;
int ret = 0;
for (int i = 1; i < pricesSize; i ++) {
if (min > prices[i]) {
ret = (max - min) > ret ? (max - min) : ret;
min = prices[i];
max = min;
}
else if (max < prices[i]) { 
    max = prices[i];

}
ret = (max - min) > ret ? (max - min) : ret;
return ret;
}


int main(int argc, char *argv[])
{
int arr[] = {5, 5, 6, 5, 4, 3, 5, 8, 3, 2, 5, 9};
printf("maxprofit: %d\n", maxProfit(arr, sizeof arr/sizeof arr[0]));
return 0;
}

版权声明:本文为公众号“编程牛人”原创文章,欢迎扫描博客左侧的二维码,并注明csdn,添加我为好友后取得授权,或加入技术讨论群。

相关文章推荐

算法导论之求股票最大收益

int a[] = { 1, 23, 4, 3, 4, 3, 2, 46, 7, 5, 5 };上述数组可看做是一支几天连续的股票价格。 我们要做的是用最小的时间复杂度来求出最大化收益 ...

【数字题1】股票的最大收益

【问题】

bzoj1497 [NOI2006]最大收益

最小割 思路比较简单 点数看起来很多但是因为是类似二分图的东西所以跑的比较快 源点对每个用户连容量为收益的边 用户向中转站连容量无穷大的边 中转站向汇点连容量为成本的边 要么割掉用户带来的收益...
  • QwQ2000
  • QwQ2000
  • 2017年01月04日 14:36
  • 92

双重DP实例2:K次购买股票的最大收益

K次购买股票的最大收益题目给定一系列的股票价格prices和最大购买次数k,求最大收益。两笔交易不能交叉。问题解析代码时间复杂度分析...

如何买卖股票以获得最大收益 java算法

已知一段时间内股价有涨跌,例如 {3,6,1,4,7,3,8,8,3,5}.求最大获利是多少。不能买空卖空。 例如,上例应该是第3天买,第7天卖获利最大,获利是7元。 我没有想出什么好办法,下例就...
  • OnlyQi
  • OnlyQi
  • 2013年01月25日 15:34
  • 3941

网易游戏面试--两次股票买入卖出的最大收益

第一问: 对于只有一次买入卖出的最大收益可以参照http://blog.csdn.net/calmreason/article/details/7904062,已经将的非常详细了 第二问: 当时...

最多n次购买时股票最大收益问题

一般我们常见的股票最大收益问题是: 已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天的股价。 假设你一开始没有股票,但有至多两次买入...

Leetcode 121 Best Time to Buy and Sell Stock 单次买卖股票最大收益

假设你有一个数组,里面记录的是每一天的股票的价格。 如果你至多只能完成一次交易(即,买一次股票、卖一次股票),设计一个算法来计算最大收益。...

笔试题:风口之下,猪都能飞。设计算法,计算你能获得的最大收益。

风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天的...

收益最大

题目描述 已知每个人做每件工作的收益WijW_{ij}求一种分配的方案(每个人必须有工作),且收益最大。 输入描述第一行一个整数N(1≤N≤300)N(1\le N\le 300),下面是一个N∗...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:最大收益
举报原因:
原因补充:

(最多只允许输入30个字)