Week 2019-06-30

作者: Jiawei_84a5 | 来源:发表于2019-06-30 16:07 被阅读0次

    买卖股票的最佳时机 I

    func maxProfit(prices []int) int {
        maxProfit := 0
        minPrice := math.MaxInt64
        for _, v := range prices {
            minPrice = mymin(minPrice, v)
            maxProfit = mymax(maxProfit, v-minPrice)
        }
        return maxProfit
    }
    func mymin(x, y int) int {
        if x > y {
            return y
        }
        return x
    }
    func mymax(x, y int) int {
        if x > y {
            return x
        }
        return y
    }
    

    买卖股票的最佳时机 II

    func maxProfit(prices []int) int {
        cur, max := 0, 0
        for i := 1; i < len(prices); i++ {
            cur = mymax(cur, cur+prices[i]-prices[i-1])
            max = mymax(cur, max)
        }
        return max
    }
    func mymax(x, y int) int {
        if x > y {
            return x
        }
        return y
    }
    

    买卖股票的最佳时机 III

    /**
    只能进行两次交易,因此一共有四个状态,互相之间转移
    */
    
    func maxProfit(prices []int) int {
        b1, b2 := math.MinInt32, math.MinInt32
        s1, s2 := 0, 0
        for i := 0; i < len(prices); i++ {
            b1 = max(b1, -prices[i])
            s1 = max(s1, b1+prices[i])
            b2 = max(b2, s1-prices[i])
            s2 = max(s2, b2+prices[i])
        }
        return s2
    }
    
    func max(x, y int) int {
        if x > y {
            return x
        }
        return y
    }
    

    相关文章

      网友评论

        本文标题:Week 2019-06-30

        本文链接:https://www.haomeiwen.com/subject/tasbcctx.html