首页 > 其他分享 >#yyds干货盘点# 面试必刷TOP101:买卖股票的最好时机(二)

#yyds干货盘点# 面试必刷TOP101:买卖股票的最好时机(二)

时间:2022-10-12 18:32:20浏览次数:48  
标签:yyds int 收益 股票价格 prices 必刷 卖出 TOP101 dp

1.简述:

描述

假设你有一个数组prices,长度为n,其中prices[i]是某只股票在第i天的价格,请根据这个价格数组,返回买卖股票能获得的最大收益

1. 你可以多次买卖该只股票,但是再次购买前必须卖出之前的股票

2. 如果不能获取收益,请返回0

3. 假设买入卖出均无手续费

数据范围:  , 

要求:空间复杂度 ,时间复杂度 

进阶:空间复杂度 ,时间复杂度 

示例1

输入:

[8,9,2,5,4,7,1]

返回值:

7

说明:

在第1天(股票价格=8)买入,第2天(股票价格=9)卖出,获利9-8=1
在第3天(股票价格=2)买入,第4天(股票价格=5)卖出,获利5-2=3
在第5天(股票价格=4)买入,第6天(股票价格=7)卖出,获利7-4=3
总获利1+3+3=7,返回7
示例2

输入:

[5,4,3,2,1]

返回值:

0

说明:

由于每天股票都在跌,因此不进行任何交易最优。最大收益为0。
示例3

输入:

[1,2,3,4,5]

返回值:

4

说明:

第一天买进,最后一天卖出最优。中间的当天买进当天卖出不影响最终结果。最大收益为4。

2.代码实现:

import java.util.*;
public class Solution {
public int maxProfit (int[] prices) {
int n = prices.length;
//dp[i][0]表示某一天不持股到该天为止的最大收益,dp[i][1]表示某天持股,到该天为止的最大收益
int[][] dp = new int[n][2];
//第一天不持股,总收益为0
dp[0][0] = 0;
//第一天持股,总收益为减去该天的股价
dp[0][1] = -prices[0];
//遍历后续每天,状态转移
for(int i = 1; i < n; 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[n - 1][0];
}
}

标签:yyds,int,收益,股票价格,prices,必刷,卖出,TOP101,dp
From: https://blog.51cto.com/u_15488507/5751275

相关文章

  • #yyds干货盘点# 自动化测试工具的选择
    在自动化测试的分类中,概述了测试工具的分类,下面就实践层面讨论自动化制试工具的选择。目前市场上的自动化测试工具非常多,下面几款是比较常见的自动化测试工具。一、UFT又叫......
  • #yyds干货盘点#今天聊聊大文件上传
    文件上传在开发中的需求比较多,上传的解决方案也很多,咱们下面一一来看:文件上传普通表单上传使用PHP来展示常规的表单上传是一个不错的选择。首先构建文件上传的表单,并指定表......
  • #yyds干货盘点# LeetCode 热题 HOT 100:最小覆盖子串
    题目:给你一个字符串s、一个字符串t。返回s中涵盖t所有字符的最小子串。如果s中不存在涵盖t所有字符的子串,则返回空字符串""。 注意:对于t中重复字符,我们寻......
  • #yyds干货盘点# 详细设计
    详细设计阶段的主要任务是对每个模块完成的功能进行具体描述,要把功能描述转变为精确的、结构化的过程描述。即该模块的控制结构是怎样的,先做什么,后做什么,有什么样的条件判定......
  • #yyds干货盘点#【愚公系列】2022年10月 微信小程序-全局配置属性之页面配置
    前言微信小程序是由一个个单页面组成,每个页面都是由固定规则的。小程序页面自身分为两个主要部分独立运行:view模块和service模块。在开发者工具中,它们独立运行于不同的......
  • #yyds干货盘点# 前端歌谣的刷题之路-第一百一十题-高频数据类型
    前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从......
  • #yyds干货盘点# 概要设计
    在概要设计阶段,开发人员要把确定的各项功能需求转换成需要的体系结构。在该体系结构中,每个成分都是意义明确的模块,即每个模块都和某些功能需求相对应,因此,概要设计就是设计软......
  • #yyds干货盘点# 面试必刷TOP101:打家劫舍(二)
    1.简述:描述你是一个经验丰富的小偷,准备偷沿湖的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家,就不能再偷第二家,如果偷了第二家,那么就......
  • #yyds干货盘点#【愚公系列】2022年10月 微信小程序-全局配置属性之入口页面
    前言一、entryPagePath1.入口文件的配置指定小程序的默认启动路径(首页),常见情景是从微信聊天列表页下拉启动、小程序列表启动等。如果不填,将默认为pages列表的第一项。......
  • #yyds干货盘点#
    前序遍历,然后依照图利用二叉树的右半边树构建链表,注意要清空左子树,因为检测机制可能是层序遍历/***<p>给你二叉树的根结点<code>root</code>,请你将它展开为一个单链表:<......