Leetcode--122. 买卖股票的最佳时机Ⅱ

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

示例 1:

输入: [7,1,5,3,6,4]
输出: 7
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
     随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。
示例 2:

输入: [1,2,3,4,5]
输出: 4
解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
     注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。
     因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。
示例 3:

输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

 

思路:

情况一:今天买,明天卖,收益为prices[i]-prices[i-1]

情况二:连续上涨,则在第一天买,在上涨到顶峰的最后一天卖掉

情况三:连续下降, 则不买卖收益最大,不会亏钱。
算法流程:

遍历整个股票交易日价格列表 price,策略是所有上涨交易日都买卖(赚到所有利润),所有下降交易日都不买卖(永不亏钱)。
设 tmp 为第 i-1 日买入与第 i 日卖出赚取的利润,即 tmp = prices[i] - prices[i - 1] ;
当该天利润为正 tmp > 0,则将利润加入总利润 profit;当利润为 0 或为负,则直接跳过;
遍历完成后,返回总利润 profit。
复杂度分析:

时间复杂度 O(N):只需遍历一次price;
空间复杂度 O(1):变量使用常数额外空间。

提交的代码:

class Solution {
    public int maxProfit(int[] prices) {
        int sum=0;
        for(int i=1;i<prices.length;i++)
        {
            if(prices[i]-prices[i-1]>0)
            {
                sum+=prices[i]-prices[i-1];
            }
        }
        return sum;
    }
}

完整的代码:


public class Solution122 {
public static int maxProfit(int[] prices) {
        int sum=0;
        for(int i=1;i<prices.length;i++)
        {
            if(prices[i]-prices[i-1]>0)
            {
                sum+=prices[i]-prices[i-1];
            }
        }
        return sum;
    }
public static void main(String[] args)
{
    int nums[] = {7,1,5,3,6,4};
    System.out.println(maxProfit(nums));
}
}
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

语法树的画法(根据文法求字符串)

目录 1.语法树的画法 2.语法树的短语 3.直接短语&#xff08;直接到根部&#xff09; 4.素短语 5.句柄 6.算符优先分析句型 1.语法树的画法 文法G[E]:E->EE | E*E | (E) | i ,字符串 ii*i 推导方式有两种最左推导和最右推导&#xff08;推导的技巧就是逐步靠近字符串…

AI专家喋喋不休展开争论 为什么说预测是智能的本质

来源&#xff1a; 网易智能编译&#xff1a;网易智能 选自&#xff1a;medium参与:Rosie【网易智能讯 6月22日消息】机器学习和智能都植根于预测&#xff0c;这是巧合吗&#xff1f;当我们的技术体现了智能的本质时&#xff0c;我们正在接近一个紧要关头吗&#xff1f;或者说我…

java获取数据库连接语句_JAVA连接数据库语句

Class.forName(驱动字符串)Connection connectionDriverManager.getConnection(连接字符串)SQL 20001 通用的JDBC-ODBC桥连接驱动字符串 sun.jdbc.odbc.JdbcOdbcDriver连接字符串 JDBC:ODBC:数据源名2通过JDBC的纯连接驱动字符串 com.microsoft.jdbc.sqlserver.SQLServerDri…

认识Windows Communication Foundation

好久没有写博客&#xff0c;作为一个程序员&#xff0c;我居然习惯了不写博客。也难怪这些年来&#xff0c;一直原地踏步&#xff0c;无所长进。真是一份付出一份收获&#xff0c;种瓜得瓜&#xff0c;种豆得豆。 Windows Communication Foundation 是一种非常实用、非常强大…

Leetcode--714. 买卖股票的最佳时间含手续费

给定一个整数数组 prices&#xff0c;其中第 i 个元素代表了第 i 天的股票价格 &#xff1b;非负整数 fee 代表了交易股票的手续费用。 你可以无限次地完成交易&#xff0c;但是你每次交易都需要付手续费。如果你已经购买了一个股票&#xff0c;在卖出它之前你就不能再继续购买…

图解丨卷积神经网络数学原理解析

原标题&#xff1a;Gentle Dive into Math Behind Convolutional Neural Networks作 者&#xff1a;Piotr Skalski 编 辑 | Pita  翻 译&#xff1a;通夜&#xff08;中山大学&#xff09;、had_in&#xff08;电子科技大学&#xff09;自动驾驶、智能医疗保健和自助零售这…

java接收uniapp上传的图片_uni-app 上传图片的坑

起先&#xff0c;在uni-app插件市场下载了上传图片的插件由于uni-app的API uni.unloadFile()其中content-type 为 multipart/form-data导致在于后端对接口时出现跨域最后解决方法:自己重新用axios封装了一个请求方式npm install axiosutil / axios-request.jsimport axios from…

Leetcode--123. 买卖股票的最佳时间Ⅲ

给定一个数组&#xff0c;它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意: 你不能同时参与多笔交易&#xff08;你必须在再次购买前出售掉之前的股票&#xff09;。 示例 1: 输入: [3,3,5,0,…

[2018湖南省队集训] 6.28 T3 simulate

这道模拟题出的我毫无脾气2333 最重要的是先要发现操作顺序不影响最后的答案&#xff0c;也就是每次随便挑一个>2的数进行操作最后总是可以得到同样的数列。 (这个还不太难想qwq) 但是最骚的是接下来的模拟。。。。 我们考虑从左到右消&#xff0c;假设目前在i&#xff0c;1…

“AI工厂”本质:AI基础设施及怎样将AI转化为运营动力

来源&#xff1a;TechTalks作者&#xff1a;Ben Dickson编译&#xff1a;科技行者持续关注人工智能新闻的朋友肯定已经发现&#xff0c;AI这个字眼已经被异化成了两个截然不同的定义。媒体和影视作品喜欢把AI描述成已然具备人类般的能力、会导致大量失业甚至会出动机械部队进行…

Leetcode--188. 买卖股票的最佳时机Ⅳ

给定一个数组&#xff0c;它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。 注意: 你不能同时参与多笔交易&#xff08;你必须在再次购买前出售掉之前的股票&#xff09;。 示例 1: 输入: [2,4,1], k…

java comparator内部类_java - Java Comparator使用.reverseOrder()但内部类 - 堆栈内存溢出...

我正在创建一个简单的程序来了解Java Comparator类。 我已经按顺序对一个Arraylist了排序&#xff0c;但现在我想按降序对列表进行排序&#xff0c;但是我在调​​用.reverseOrder()方法时遇到问题&#xff0c;因为我使用了一个实现Comparator的内部类(歌曲是一首歌)容纳吸气剂…

继续深入更新shell脚本容易出错的地方

一、在shell中用到如果需要输入某些值&#xff0c;需要用到read -p命令 这是我写的猜数字游戏&#xff0c;一开始在输出的时候&#xff0c;屏幕上总会打印输出 "INT" 经过反复的练习才发现 双引号后面应该跟着一个空格&#xff0c;然后在写变量&#xff0c;就不会把…

中国工程院发布2021中国电子信息工程科技发展十四大趋势

来源&#xff1a;人民邮电报1月5日&#xff0c;中国工程院信息与电子工程科技发展战略研究中心发布“中国电子信息工程科技发展十四大趋势&#xff08;2021&#xff09;”。这十四大趋势涵盖信息化、计算机系统与软件、网络与通信、计算机应用、网络安全、集成电路、数据、感知…

AcWing--2.01背包问题

有 NN 件物品和一个容量是 VV 的背包。每件物品只能使用一次。 第 ii 件物品的体积是 vivi&#xff0c;价值是 wiwi。 求解将哪些物品装入背包&#xff0c;可使这些物品的总体积不超过背包容量&#xff0c;且总价值最大。 输出最大价值。 输入格式 第一行两个整数&#xff…

java实现数组排序代码_Java使用选择排序法对数组排序实现代码

编写程序&#xff0c;实现将输入的字符串转换为一维数组&#xff0c;并使用选择排序法对数组进行排序。思路如下&#xff1a;点击"生成随机数"按钮&#xff0c;创建Random随机数对象&#xff1b;使用JTextArea的setText()方法清空文本域&#xff1b;创建一个整型一维…

Python题整理

1、Python的多态、鸭子类型&#xff1f; 2、Python的序列化工具有哪些&#xff1f; 3、Python处理Excel的工具有哪些&#xff1f; 4、Python处理Graph的算法库有哪些&#xff1f; 5、Python的dict是基于什么数据结构实现的&#xff1f;优点和缺点是什么&#xff1f; 6、 对于di…

ICinsights:中国芯片难达成既定的2025目标

来源&#xff1a;内容由半导体行业观察&#xff08;ID&#xff1a;icbank&#xff09;综合自「ICinsights」&#xff0c;谢谢。据知名分析机构ICinsights报道&#xff0c;在中国的集成电路市场和中国的本土集成电路生产之间应该有一个非常明显的区别。正如IC Insights经常指出的…

AcWing:3.完全背包问题

有 NN 种物品和一个容量是 VV 的背包&#xff0c;每种物品都有无限件可用。 第 ii 种物品的体积是 vivi&#xff0c;价值是 wiwi。 求解将哪些物品装入背包&#xff0c;可使这些物品的总体积不超过背包容量&#xff0c;且总价值最大。 输出最大价值。 输入格式 第一行两个整…

html与js与mysql_WebView加载html与JS交互

一、加载Html的几种方法直接在Activity中实例化WebViewWebView webview new WebView(this);webview.loadUrl(......);在XML中生命webviewWebView webView (WebView) findViewById(R.id.webview);载入工程内部页面 page.html存储在工程文件的assets根目录下webView (WebView) …