题目一

leetcode:53

代码与解析一

暴力解法我试了,无法通过,会超时

carl大佬代码随想录本题链接
想法很巧,但我没想到,

func maxSubArray(nums []int) int {
    res := -10000
    count := 0
    for i:=0;i<len(nums);i++{
        count += nums[i]
        if count>res{
            res = count
        }
        if count<0{
            count = 0
        }
    }
    return res
}

题目二

leetcode:122

代码与解析二


贪心算法很巧妙,把利润分解
一开始我以为的只买入一次,然后卖了,求利润最大化
但实际不是

贪心巧在把利润分解为按每天为单位,
而不是整体的,最低价对应最高卖出


整体代码

func maxProfit(prices []int) int {
    res := 0
    for i:=0;i+1<len(prices);i++{
        v := prices[i+1]-prices[i]
        if v>0{
            res += v
        }
    }
    return res
}

// func maxProfit(prices []int) int {
//     var sum int
//     for i := 1; i < len(prices); i++ {
//         // 累加每次大于0的交易
//         if prices[i]-prices[i-1] > 0 {
//             sum += prices[i]-prices[i-1]
//         }
//     }
//     return sum
// }


分类: 算法

站点统计

  • 文章总数:315 篇
  • 分类总数:20 个
  • 标签总数:193 个
  • 运行天数:1147 天
  • 访问总数:26696 人次

浙公网安备33011302000604

辽ICP备20003309号