最大收益

原创 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;
}

版权声明:本文为公众号“广州小程”原创文章,欢迎扫描博客左侧的二维码,关注有用的技能与通用能力。

小米笔试-股票最大收益(动态规划)

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

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

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

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

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

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

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

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

K次购买股票的最大收益题目给定一系列的股票价格prices和最大购买次数k,求最大收益。两笔交易不能交叉。问题解析代码时间复杂度分析...
  • rose_gong
  • rose_gong
  • 2015年07月26日 19:06
  • 360

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

【问题】
  • mermaidz
  • mermaidz
  • 2013年10月20日 09:00
  • 545

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

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

动态规划算法举例解析(最大收益和最小损失选择)

在说动态规划的例子之前,先说明一下动态规划和分治算法的区别 虽然两者都是通过组合子问题的解来求解原问题但是分治方法将问题划分为互不相交的子问题,递归的求解子问题再将它们的解组合起来求出原问题的解。 而...
  • qq_27717921
  • qq_27717921
  • 2016年10月28日 21:14
  • 1262

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

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

bzoj1497 [NOI2006]最大收益

最小割 思路比较简单 点数看起来很多但是因为是类似二分图的东西所以跑的比较快 源点对每个用户连容量为收益的边 用户向中转站连容量无穷大的边 中转站向汇点连容量为成本的边 要么割掉用户带来的收益...
  • QwQ2000
  • QwQ2000
  • 2017年01月04日 14:36
  • 123
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:最大收益
举报原因:
原因补充:

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