赞
踩
题目:
买卖股票的最佳时机 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。 注意:你不能在买入股票前卖出股票。 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。 示例 2: 输入: [7,6,4,3,1] 输出: 0 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。
思路:
如果今天的价格大于明天的价格那么就可以直接判断不可能买入今天的股票,设置一个变量保存最大值然后依次用后面的的价格减去前面的价格如果大于最大值,就将这个值赋格最大值,依次类推。
代码:
int maxProfit(int* prices, int pricesSize){ int a=0; for(int i=0;i<pricesSize;i++){ for(int s=i+1;s<pricesSize;s++){ if() if(prices[i]>=prices[s]){ break; } if(prices[s]-prices[i]>=a){ a=prices[s]-prices[i]; } } } return a; }
leetcode标准答案:
int maxProfit(int* prices, int pricesSize){
int max=0,i;
int minprice=60000;
for(i=0;i<pricesSize;i++) {
if(prices[i] < minprice)
minprice=prices[i];
else if(prices[i]-minprice>max)
max=prices[i]-minprice;
}
return max;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。