博客
关于我
LeetCode122.买卖股票的最佳时机2Golang版
阅读量:371 次
发布时间:2019-03-05

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

要解决这个问题,我们需要找到一种方法来计算在给定股票价格序列中能够获得的最大利润。允许进行多次交易,但每次交易必须先卖出再买入,不能同时进行多笔交易。

方法思路

我们可以通过遍历股票价格数组,找出所有相邻两天价格上涨的部分,并将这些上涨的利润累加起来。这样就能得到最大利润。具体步骤如下:

  • 初始化利润为0。
  • 从第二个元素开始遍历数组。
  • 对于每个元素,检查它是否大于前一个元素的价格。如果是,计算当前利润并累加到总利润中。
  • 最终返回累加的总利润。
  • 这种方法的时间复杂度是O(n),空间复杂度是O(1),非常高效。

    解决代码

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

    代码解释

    • var profit int = 0:初始化利润为0。
    • for i := 1; i < len(prices); i++:从第二个元素开始遍历数组。
    • if prices[i] > prices[i-1]:检查当前元素是否大于前一个元素。
    • profit += prices[i] - prices[i-1]:如果满足条件,将上涨的利润累加到总利润中。
    • return profit:返回累加的总利润。

    这个方法能够高效地计算最大利润,适用于所有可能的输入情况。

    转载地址:http://slcwz.baihongyu.com/

    你可能感兴趣的文章
    全局锁和表锁 :给表加个字段怎么有这么多阻碍?
    查看>>
    事务到底是隔离的还是不隔离的?
    查看>>
    @Import注解---导入资源
    查看>>
    二分查找与插入排序的结合使用
    查看>>
    892 三维形体的表面积(分析)
    查看>>
    40. 组合总和 II(dfs、set去重)
    查看>>
    16 最接近的三数之和(排序、双指针)
    查看>>
    279 完全平方数(bfs)
    查看>>
    410 分割数组的最大值(二分查找、动态规划)
    查看>>
    875 爱吃香蕉的珂珂(二分查找)
    查看>>
    桌面图标的自动排列图标
    查看>>
    第十一届蓝桥杯python组第二场省赛-数字三角形
    查看>>
    数字三角形的无返回值的深度优先搜索解法
    查看>>
    完全背包问题的简化思路
    查看>>
    Jquery添加元素
    查看>>
    Jquery使用需要下载的文件
    查看>>
    BST中某一层的所有节点(宽度优先搜索)
    查看>>
    广度优先搜索
    查看>>
    猜字母
    查看>>
    Eclipse导出项目出现resource is out of sync with the file...错误
    查看>>