LintCode 买卖股票的最佳时机 II

题目

假设有一个数组,它的第i个元素是一个给定的股票在第i天的价格。设计一个算法来找到最大的利润。你可以完成尽可能多的交易(多次买卖股票)。然而,你不能同时参与多个交易(你必须在再次购买前出售股票)。

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

分析

这个问题可以被看作找到数组中所有的上升序列问题。例如,对于给定的5,1,2,3,4
从1买进然后从4卖出,和从1买进,2卖出,2买进,3卖出效果是一样的.
所以我们遍历一遍数组,找到所有上升的的序列

代码

class Solution {
    /**
     * @param prices: Given an integer array
     * @return: Maximum profit
     */
    public int maxProfit(int[] prices) {
        // write your code here
        int profit = 0;
        for(int i=1;i<prices.length;i++) {
            int diff = prices[i] - prices[i-1];
            if(diff > 0)
                profit += diff;
        }
        return profit;
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 算法技术解构 1、Python基础知识 (1)IPythonIPython的开发者吸收了标准解释器的基本概念,在此...
    shenciyou阅读 5,568评论 0 10
  • 我将从股票市场谈起,试图展开一种反身性的理论。这是因为:一则,作为拥有近25 年资历的投资商,我最熟悉的就是股票市...
    Julien_竹先生阅读 1,682评论 5 33
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,790评论 0 33
  • 一提到习惯,不由自主的就会在脑海中浮现出一些画面,或是一些人…… 习惯,真的很可怕,它让我们产生依赖,会上瘾…… ...
    六月的花儿阅读 201评论 3 0
  • 听过来人说,毕业后的第一份工作尤其重要,它决定了你今后摸爬滚打的圈子。 听...
    奇怪的雨阅读 280评论 0 0