LeetCode 121. Best Time to Buy and Sell Stock

原创 2016年05月31日 22:05:57

Best Time to Buy and Sell Stock

Des

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.

分析

看到题,自己思路很清晰,这个存在一个时间序列问题在里边就是,先买后卖,卖的智能位于买的后边,网上说是动态规划,我不是很懂,就先按自己思路写了一个。先找一个目前最小的,从当前之后找一个最大的,复杂度N**3了,太怕。

class Solution {
public:
    int max1(vector<int>& prices,int i){
        int maxp=-1000;
        for(;i<prices.size();i++){
            if(prices[i]>maxp)
                maxp=prices[i];
        }
        return maxp;
    }
    int min1(vector<int>& prices,int i){
        int minp=1000;
        for(int j=0;j<=i;j++){
            if(prices[j]<minp)
                minp=prices[i];
        }
        return minp;
    }
    int maxProfit(vector<int>& prices) {
        int maxp=-1000;
        for(int i=0;i<prices.size();i++){
            if((max1(prices,i) - min1(prices,i)) > maxp)
                maxp=(max1(prices,i)-min1(prices,i));
        }
        return maxp;
    }
};

自己写的也能work,这也算不赖了,但是有些情况会超时,并且题是easy的不应该有这么多代码,可是自己真没什么思路了。

别人处理的方法

首先从后往前找,边找出最大的卖出值,边求最大的卖出价,这个题的code真的觉得很精妙。

Code

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int ans=-1,res=0;
        for(int i=prices.size()-1;i>=0;i--){
            ans=max(ans,prices[i]);
            res=max(res,ans-prices[i]);
        }
        return res;
    }
};
版权声明:本文为博主原创文章,未经博主允许不得转载。

【LeetCode-面试算法经典-Java实现】【121-Best Time to Buy and Sell Stock(最佳买卖股票的时间)】

【121-Best Time to Buy and Sell Stock(最佳买卖股票的时间)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Say you have a...

Leetcode 121. Best Time to Buy and Sell Stock

噢?一脸黑人问号,这道题目怎么会比之前那题通过率更低?刷完才发现,好像解题方式完全不同,题目的含义大相径庭。题目Say you have an array for which the ith elem...

LeetCode121—Best Time to Buy and Sell Stock

LeetCode121—Best Time to Buy and Sell Stock

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

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

leetcode_[python/C++]_121/122/123/188.Best Time to Buy and Sell Stock I/II/III/IV

121. Best Time to Buy and Sell Stock [题目] Say you have an array for which the ith element is the p...

LeetCode-121&122&123&188.Best Time to Buy and Sell Stock

https://leetcode.com/problems/best-time-to-buy-and-sell-stock/ Say you have an array for which the...

LeetCode OJ-121. Best Time to Buy and Sell Stock(股票问题)

121. Best Time to Buy and Sell Stock Say you have an array for which the ith element is the pri...

121.[Leetcode]Best Time to Buy and Sell Stock

题意 :给你一串股票数字,你有一次的买入和卖出的机会,求最大的收益(卖出-买入)是多少?我的思路:一开始想的是双循环,果断超时。查询了一下这里要用到动态规划的思想:那么什么是动态规划呢? 动态规划...

LeetCode-121. Best Time to Buy and Sell Stock (Java)

Say you have an array for which the ith element is the price of a given stock on day i. If you we...
  • NOadu
  • NOadu
  • 2017年07月08日 15:16
  • 112

【算法作业6】LeetCode 121. Best Time to Buy and Sell Stock

第六周算法作业:LeetCode 121. Best Time to Buy and Sell Stock
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode 121. Best Time to Buy and Sell Stock
举报原因:
原因补充:

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