首页 > 其他分享 >代码随想录day41 || 121 买卖股票最佳时机,122 买卖股票最佳时机||,123 买卖股票最佳时机|||

代码随想录day41 || 121 买卖股票最佳时机,122 买卖股票最佳时机||,123 买卖股票最佳时机|||

时间:2024-08-26 11:05:01浏览次数:8  
标签:买卖 int 股票 price 最佳时机 max prices dp

121 买卖股票最佳时机

image

func maxProfit(prices []int) int {
	// dp五部曲
	// 1 dp数组以及下标含义 dp[i][0] 表示第i天持有股票  dp[i][1] 表示第i天不持有
	// 2 递推公式,dp[i][0] = max(dp[i-1][0], 0-price[i])
	//           dp[i][1] = max(dp[i-1][1], dp[i-1][0]+price[i])
	// 初始化,如果第0天持有就是dp[0][0] = -price[0], 不持有就是dp[0][1] = 0
	// 遍历prices
	// print
	if len(prices) == 1{
		return 0
	}

	var dp = make([][]int, len(prices))
	for idx, _ := range dp {
		dp[idx] = make([]int, 2)
	}
	dp[0][0] = 0 - prices[0]
	dp[0][1] = 0
	for i:=1; i<len(prices); i++ {
		dp[i][0] = max(dp[i-1][0], 0-prices[i])
		dp[i][1] = max(dp[i-1][1], dp[i-1][0] + prices[i])
	}
	//fmt.Println(dp)
	return dp[len(prices)-1][1]
}

122 买卖股票最佳时机||

image

func maxProfit(prices []int) int {
	// dp五部曲
	// 1 dp数组以及下标含义 dp[i][0] 表示第i天持有股票  dp[i][1] 表示第i天不持有
	// 2 递推公式,dp[i][0] = max(dp[i-1][0], dp[i-1][1]-price[i]) // 和买卖1区别在于可能非首次购买了,此时我们已经有部分利润,不再是0-price
	//           dp[i][1] = max(dp[i-1][1], dp[i-1][0]+price[i])
	// 初始化,如果第0天持有就是dp[0][0] = -price[0], 不持有就是dp[0][1] = 0
	// 遍历prices
	// print
	if len(prices) == 1{
		return 0
	}

	var dp = make([][]int, len(prices))
	for idx, _ := range dp {
		dp[idx] = make([]int, 2)
	}
	dp[0][0] = 0 - prices[0]
	dp[0][1] = 0
	for i:=1; i<len(prices); i++ {
		dp[i][0] = max(dp[i-1][0], dp[i-1][1] - prices[i])
		dp[i][1] = max(dp[i-1][1], dp[i-1][0] + prices[i])
	}
	//fmt.Println(dp)
	return dp[len(prices)-1][1]
}

买卖股票最佳时机|||

func maxProfit(prices []int) int {
	// 难点在于有四个状态
	// dp[i][0] 表示第一次持有 = max(dp[i-1][0], 0-price[i])
	// dp[i][1] 表示第一次不持有 = max(dp[i-1][1], dp[i-1][0]+price[i])
	// dp[i][2] 表示第二次持有 = max(dp[i-1][2], dp[i-1][1]-price[i]) // 此时已经一次买卖,所以手上现金可能不是0
	// dp[i][3] 表示第二次不持有 = max(dp[i-1][3], dp[i-1][2]+price[i])
	// 初始化 dp[0][0] = -price[0] , dp[0][1]=0 , dp[0][2] = -price[0] , dp[0][3] = 0

	var dp = make([][]int, len(prices))
	for idx, _ := range dp {
		dp[idx] = make([]int, 4)
	}
	dp[0][0] = -prices[0]
	dp[0][1] = 0
	dp[0][2] = -prices[0]
	dp[0][3] = 0

	for i:=1; i<len(prices); i++{
		dp[i][0] = max(dp[i-1][0], 0 - prices[i])
		dp[i][1] = max(dp[i-1][1], dp[i-1][0] + prices[i])
		dp[i][2] = max(dp[i-1][2], dp[i-1][1] - prices[i])
		dp[i][3] = max(dp[i-1][3], dp[i-1][2] + prices[i])
	}
	//fmt.Println(dp)
	return max(dp[len(prices)-1][1], dp[len(prices)-1][3])
}

标签:买卖,int,股票,price,最佳时机,max,prices,dp
From: https://www.cnblogs.com/zhougongjin55/p/18380606

相关文章

  • 计算机毕业设计Spark+Tensorflow股票推荐系统 股票预测系统 股票可视化 股票数据分析
    1. 需求分析基于Spark的股票大数据分析及可视化系统是一个利用Spark分布式计算框架进行股票市场数据处理、分析和可视化的系统。它能够处理大规模的实时股票数据,包括股票价格、交易量、市场指标等,提供实时数据处理、数据可视化与展示和并提供相应决策支持。因此基于Spark的......
  • 调用股票网站接口读取大A数据——个股资金流入趋势
    以某股票为例,调用自定义的一个类,读取数据。classBigAData:#获取资金流向数据defget_money_flow(self,stock_code,page=1,num=20,sort='opendate',asc=0):'''该函数通过股票代码从新浪财经API获取资金流向数据。参数包括股票代码......
  • 【人工智能】案例分析和项目实践:使用高斯过程回归预测股票价格
    一、项目背景与目标股票价格预测是金融领域的热门话题,对于投资者、金融机构及研究者而言具有重要意义。高斯过程回归(GaussianProcessRegression,GPR)作为一种强大的非参数贝叶斯回归方法,能够处理复杂的非线性关系,同时提供预测的不确定性估计,非常适合用于股票价格预测。项目......
  • 【2024最新整理】股票量化分析必备的免费股票数据接口之实时交易数据
    在量化分析领域,实时、准确的数据接口是不可或缺的。经过多次实际测试,已确认以下列出的数据接口均稳定可用,现在,我很乐意将这些宝贵的资源分享给正在从事量化分析的朋友们,希望能对你们的研究和工作有所帮助。【重要提示】下方所有API接口Url链接结尾的b997d4403688d5e66a,均为数据......
  • Spring Boot 应用案例:打造股票价格自动通知平台
    在本篇博文中,我们将构建一个简单的SpringBoot应用来演示如何创建一个股票价格更新系统,并在股票价格变动时自动通知订阅用户。这个示例将涵盖SpringBoot的核心功能,包括Web模块、数据持久化、消息队列以及简单的用户订阅机制。项目结构和依赖首先,我们需要创建一个新的Spring......
  • 股票的支撑位是怎么计算的
    还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信(gis-dajianshi),一起交流。No.内容链接1Openlayers【入门教程】-......
  • 【有源码】基于Python的股票数据分析与价格预测TensorFlow深度学习框架和长短期记忆网
    注意:该项目只展示部分功能,如需了解,文末咨询即可。本文目录1.开发环境2系统设计2.1设计背景2.2设计内容3系统页面展示3.1预测页面3.2可视化页面3.3管理页面3.4功能展示视频4更多推荐5部分功能代码5.1爬虫部分代码5.2预测部分代码1.开发环境开发语......
  • 力扣 | 动态规划 | 状态机 | 买卖股票 | 买卖股票的最佳时机
    文章目录一、309.买卖股票的最佳时机含冷冻期二、714.买卖股票的最佳时机含手续费三、123.买卖股票的最佳时机III四、188.买卖股票的最佳时机IV本质上这种属于动态规划题目但又有多种状态的,我们只需要正确定义出状态即可。可能每个人定义的状态不一样,但只要是对......
  • 《python程序语言设计》2018版第7章第2题创建一个stock类,一个公司股票。创建stock,包含
    使用百分比法计算股票变化值百分比法是计算股票变化值的常用方法。具体操作是:将当前股票价格与前一交易日的股票价格进行比较,计算出价格变动的百分比。公式为:(当前价格-前一交易日价格)/前一交易日价格×100%。这种方法简单明了,可以快速得出股票变化的百分比。......
  • 代码随想录算法训练营第二十八天 | 122.买卖股票的最佳时机II , 55. 跳跃游戏 , 45.跳跃
    目录122.买卖股票的最佳时机II 思路方法一:贪心方法二:动态规划55.跳跃游戏思路方法一:使用while循环方法二:使用for循环45.跳跃游戏II 思路方法一方法二方法一:贪心方法一方法二:贪心方法二 方法三:贪心方法三心得体会1005.K次取反后最大化的数组和思路方法......