码迷,mamicode.com
首页 > 其他好文 > 详细

lintcode 中等题:

时间:2015-11-20 23:11:50      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:

题目

买卖股票的最佳时机  

 

假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格。如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润。

样例

给出一个数组样例 [3,2,3,1,2], 返回 1 

解题

通俗点说就是求 后面的数减去前面数所得结果的最大值,最后和0取最大值。

直接暴力,时间发杂度O(N2)

技术分享
public class Solution {
    /**
     * @param prices: Given an integer array
     * @return: Maximum profit
     */
    public int maxProfit(int[] prices) {
        // write your code here
        int Max = 0;
        if( prices == null || prices.length == 0)
            return 0;

        for(int i = 0;i< prices.length ;i++){
            for(int j = i;j< prices.length ;j++)
                Max = Math.max(Max, prices[j] - prices[i]);
        }
        return Max;
    }
}
Java Code

上面的程序又j==i的一项,不要对最后结果和0比较取最大值了。

那么问题来了,有没有更好的方法了?

分成两部分,前半部分的最小值  后半部分最大值,两者相减就是答案,这个貌似不好解。

在变量数组的时候,其前面的最小值比较求,当前节点可以当作最大值,这个假定的最大值 和之前求的最小值的差,也就当前节点卖出所获的收益,是局部最大值。

局部最大值的最大值就是整体最大值。

技术分享
public class Solution {
    /**
     * @param prices: Given an integer array
     * @return: Maximum profit
     */
    public int maxProfit(int[] prices) {
        // write your code here
        int result = 0;
        if( prices == null || prices.length == 0)
            return 0;
        int min = prices[0];        
        for(int i = 1;i< prices.length ;i++){
            result = Math.max(result,prices[i] - min);
            min = Math.min(min,prices[i]);
        }
        return result;
    }
}
Java Code

总耗时: 1303 ms

技术分享
class Solution:
    """
    @param prices: Given an integer array
    @return: Maximum profit
    """
    def maxProfit(self, prices):
        # write your code here
        if prices == None or len(prices) ==0:
            return 0
        Min = prices[0]
        res = 0
        for p in prices:
            res = max(res,p-Min)
            Min = min(Min,p)
        return res 
Python Code

总耗时: 218 ms

 

 

 

lintcode 中等题:

标签:

原文地址:http://www.cnblogs.com/theskulls/p/4982506.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!