Java算法_LeetCode122:买卖股票的最佳时机II

news2024/9/22 19:28:00

LeetCode122:买卖股票的最佳时机II

给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。

在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。

返回 你能获得的 最大利润 。

示例 1:

输入:prices = [7,1,5,3,6,4]

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

示例 2:

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

示例 3:

输入:prices = [7,6,4,3,1]
输出:0
解释:在这种情况下, 交易无法获得正利润,所以不参与交易可以获得最大利润,最大利润为 0 。

提示:

  • 1 <= prices.length <= 3 * 10^4
  • 0 <= prices[i] <= 10^4

解析图:

image-20221231185633820

package LeetCode.初级算法.数组.买卖股票的最佳时机II;

public class Main {
    public static void main(String[] args) {
        int[] prices={7,1,5,3,6,4};
        System.out.println(maxProfit(prices));
    }
    public static int maxProfit(int[] prices) {
        int len = prices.length;
        if (len < 2) {
            return 0;
        }

        int[][] dp = new int[len][2];

        dp[0][0] = 0;
        dp[0][1] = -prices[0];

        for (int i = 1; i < len; i++) {
            dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] + prices[i]);
            dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] - prices[i]);
        }
        return dp[len - 1][0];
    }
}

image-20221231185658923

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

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

相关文章

有关于huggingface evaluate的使用

老版本Transformer的from datasets import load_metric&#xff0c;在新版本中被替换成了evaluate。 这个包挺难用的&#xff0c;而且不同版本的接口都有点不太一样&#xff0c;本博客以transformers4.18.0, evaluate0.4.0为例&#xff0c;示范一下如何使用evaluate进行常见的…

【LDF】线性判别函数(一)

基于判别函数的判别准则 对于ccc类分类问题&#xff1a;设 gi(x),i1,2,…,cg_i(\mathbf{x}), i1,2, \ldots, cgi​(x),i1,2,…,c, 表示每个类别对应的判别函数&#xff0c;决策规则为&#xff1a;如果 gi(x)>gj(x),∀j≠ig_i(\mathbf{x})>g_j(\mathbf{x}), \forall j \n…

[机器学习-概念新] 什么是欧式距离、标准化欧式距离、马氏距离、余弦距离

1.欧式距离(Euclidean Distance) 欧式距离源自N维欧氏空间中两点间的距离公式&#xff1a; 代码实践 from scipy import spatial vec1 [1, 2, 3, 4] vec2 [5, 6, 7, 8] euclidean spatial.distance.euclidean(vec1, vec2) print(euclidean) 2.标准化欧式距离&#xff08;S…

狂揽两千星,速度百倍提升,高性能Python编译器Codon开源

这个高性能 Python 编译器具有支持 Python 众多语法、完美互通其他框架等优点。 众所周知&#xff0c;Python 是一门简单易学、具有强大功能的编程语言&#xff0c;在各种用户使用统计榜单中总是名列前茅。相应地&#xff0c;围绕 Python&#xff0c;研究者开发了各种便捷工具&…

G1垃圾回收

目录一、G1垃圾回收器G1垃圾回收阶段&#xff08;3个&#xff09;① Young Collection② Young Collection CM③ Mixed CollectionYoung Collection 跨代引用RemarkG1—垃圾回收器优化字符串去重类卸载巨型对象动态调整阈值一、G1垃圾回收器 定义&#xff1a; Garbage First&…

lanmp环境搭建,你需要一次独立安装来深入了解各个软件

一&#xff0c;安装Apache yum install httpd -y,安装apache,版本为2.4.6&#xff0c;最新为2.4.9。 cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak; vim /etc/httpd/conf/httpd.conf &#xff08;默认唯一&#xff09; 端口改为8000&#xff0c;不能与Ngin…

File类的使用

java&#xff0c;File类File类静态成员变量构造方法常用方法用于创建、删除文件/文件夹的方法用于遍历文件/文件目录的方法文件过滤器方法File类 Java文件类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。 File对象代表磁盘…

数据分析的大体思路

目录标题数据分析企业数据的分析的三个方向&#xff1a;离线分析&#xff08;Batch Processing&#xff09;实时分析&#xff08;Real Time Processing |Streaming&#xff09;&#xff1a;机器学习&#xff08;Machine Learning&#xff09;数据分析的流程明确分析的目的和思路…

JVM调优基本概念

1、jvm组成以工作流程 jvm组成 类装载器、运行时数据区&#xff08;内存模型&#xff09;、字节码执行引擎 工作大致流程 首先我们的java类编译成class类文件&#xff0c;当我们的class文件开始执行&#xff0c;我们的虚拟机便开始工作。 类加载器将class加载到运行时数据区…

SSM之Spring(一)

目录 一&#xff1a;Spring简介 1.1 Spring概述 1.2 SpringFrameWork 1.2.1 SpringFrameWork特性 1.2.2 Spring Framework五大功能模块 二&#xff1a;IOC 2.1 IOC容器 2.1.1 IOC思想 2.1.2 IOC容器在Spring中的实现 2.2 基于XML管理bean 2.2.1 入门案例 2.2.2 获取bean…

Golang switch 的使用的注意事项和细节

内容来自&#xff1a;尚硅谷-韩老师教学笔记&#xff0c;链接&#xff1a;尚硅谷 1&#xff09;case/switch 后是一个表达式( 即:常量值、变量、一个有返回值的函数等都可以) 2&#xff09;case 后的各个表达式的值的数据类型&#xff0c;必须和 switch 的表达式数据类型一致 3…

辞暮尔尔烟火年年,朝朝暮暮岁岁平安。(2022年度总结)

目录 前言&#xff1a; 一、第一件事情&#xff0c;重新认识自己&#xff0c;从内核出发 二、第二件事情&#xff0c;告别内卷&#xff0c;拥抱微雕 三、第三件事情&#xff0c;愿2023&#xff0c;你我更更好 前言&#xff1a; 今天是2022年12月31日&#xff0c;2022年的最…

Shell——变量与脚本运行的方式

文章目录变量定义变量的几种方式1&#xff09;无引号2&#xff09;单引号3&#xff09;双引号4&#xff09;反引号export定义变量变量的提取、修改与删除1&#xff09;变量的提取2&#xff09;变量的修改3&#xff09;变量的删除特殊变量1&#xff09;位置参数2&#xff09;${#…

Jetpack组件(fragment)(1)

一.什么是Fragment? 碎片是活动的一部分&#xff0c;使得活动更加的模块化设计。我们可以认为碎片是一种子活动。 碎片拥有自己的布局&#xff0c;自己的行为及自己的生命周期回调。当活动在运行的时候&#xff0c;你可以在活动中添加或者移除碎片。你可以合并多个碎片在一个…

Android修炼之混淆

自嘲时刻 作为Java和Android开发者&#xff0c;大家应该都对混淆很熟悉了。网上也有各路大神提供的混淆模板&#xff0c;基本上直接拿来用就好。但我还是想捋一捋&#xff0c;因为工作中被混淆这家伙“玩弄”了好几次&#xff0c;必须把它记在小本本上。 介绍 基本概念 混淆…

Cesium中使用Sampler3D,3D纹理,实现体渲染

Cesium中使用Sampler3D&#xff0c;3D纹理&#xff0c;实现体渲染 Cesium目前&#xff08;20221231&#xff09;还不支持直接使用3D纹理&#xff0c;但是其实内部已经可以WebGL2&#xff0c;而且内置常量也有3DTexture。所以&#xff0c;可以通过仿Texture&#xff0c;来实现3…

如何彻底的理解需求,做出更好的软件

背景&#xff1a; 最近接到了一个需求&#xff0c;大概的需求就是我们有一些数据&#xff0c;默认分为了两类。如果变多的话&#xff0c;用户找起来非常的困难&#xff0c;针对这个现象我们提出了两点解决方案。1&#xff1a;添加搜索。2&#xff1a;添加分组。 第一波设计&…

Android的adb命令实战篇-1

2023年 —— 是充满希望的一年. 对于Android开发者而言&#xff0c;ADB命令或多或少都使用过&#xff0c;今天我们就一起来整体回顾一下吧。 ADB的全称&#xff1a;Android Debug Bridge 1. ADB(Android Debug Bridge) 在实际工作中&#xff0c;周围同事会抱怨记不住常用的a…

过寒假

小时候&#xff0c;每到一放假就被父亲送回奶奶家。除了寒假作业&#xff0c;我还会带一堆书回去看。我小时候特别喜欢到邮电局大厅去订阅报刊杂志&#xff0c;就连学校也会报名订阅报刊。我小学时看完梁羽生的《七剑下天山》就是翻日报上每天的小说连载看完的。那时候过年时家…

Unity AR小游戏(玩具小车)踩坑记

最近对AR产生了兴趣。先科普一下什么是AR吧。AR是Augmented Reality&#xff08;增强现实&#xff09;的简称&#xff0c;是基于摄像头对现实世界的实时图像采集、分析和理解&#xff0c;然后在此基础上融入虚拟物体&#xff08;信息&#xff09;&#xff0c;以达到增强体验的目…