博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode-Best Time to Buy and Sell Stock I&&II
阅读量:7007 次
发布时间:2019-06-28

本文共 1406 字,大约阅读时间需要 4 分钟。

第一:题意是一个数组里保存着某支股票的股价情况。第i个为第i天的价格。求最大收益。允许买卖一次

这道题就是求最大的差值。可以记录下最小的值,然后基于最小值,找出当前的最大差值。

public class Solution {    public int maxProfit(int[] prices) {        if(prices.length==0||prices.length==1)        {            return 0;        }        int low=prices[0],ans=0;        for(int i=1;i
prices[i]) low=prices[i]; //记录最小值 else { if(prices[i]-low>ans) { ans = prices[i]-low; } } } return ans; }}

 

 

 

第二:题意在第一题的基础上允许多次买卖。但是必须先买再卖,不能连续买或者连续卖。

这道题就是求所有差值相加。可以想象将股价想象为一个折线统计图。将所有上升的段的差值相加即为结果。

public class Solution {    public int maxProfit(int[] prices) {        if(prices.length==0||prices.length==1)        {            return 0;        }        int low = prices[0];        int high = 0;        int sum = 0;        for(int i = 1;i
prices[i]) //若当前股价低于最低值,进行低吸 { low=prices[i]; } else { if((i
prices[i])) //若后面的值比当前值还大(还处于上升阶段) { continue; } else //若当前为一个顶峰点,则卖出股票 { sum = sum+prices[i]-low; low = prices[i]; } } } return sum; }}

 

转载于:https://www.cnblogs.com/ren-jie/p/5267359.html

你可能感兴趣的文章