Python实现股票最大收益计算:华为OD机试真题解析

快速体验

  1. 打开 InsCode(快马)平台 https://www.inscode.net
  2. 输入框输入如下内容
    帮我开发一个股票收益计算器,用于计算连续交易周期内通过买卖股票获得的最大人民币收益。系统交互细节:1.输入多组带货币单位(Y/S)的股票价格 2.自动转换美元为人民币(1S=7Y) 3.计算相邻交易日正差价累计值 4.输出最大收益。注意事项:需处理货币单位换算且仅保留单只股票。
  3. 点击'项目生成'按钮,等待项目生成完整后预览效果

示例图片

解题思路详解

问题核心分析

这道华为OD机试题要求实现股票交易的最大收益计算,主要考察三个关键点: 1. 混合货币单位的处理(人民币Y和美元S) 2. 单只股票持仓限制下的收益累计规则 3. 时间复杂度控制在O(n)内的遍历算法

实现步骤拆解

  1. 数据预处理阶段
  2. 使用split()方法将输入字符串按空格分割成价格列表
  3. 创建convert_price函数处理货币单位转换:

    • 截取末尾字符判断货币类型
    • Y结尾直接取数值,S结尾需乘以7换算为人民币
  4. 核心算法逻辑

  5. 初始化max_profit为0记录总收益
  6. 从第二天开始遍历价格列表(索引1到n-1)
  7. 计算当日与前一日差价diff = price[i] - price[i-1]
  8. 仅当diff为正数时才累加到max_profit

  9. 边界情况处理

  10. 空输入或单日价格返回0
  11. 持续下跌行情收益为0(如样例6/9)
  12. 美元换算时注意整型运算精度

关键问题解析

  • 为什么采用相邻交易日差价累计? 在单只股票持仓限制下,最优策略等同于所有正差价的累加。例如样例1中:
  • 2Y→3S(+19)
  • 3S→4S(+7)
  • 6Y→8S(+50) 总和76正是各段正收益之和

  • 与多股票策略的区别 若允许持有多个股票(如备注说明),则需采用完全不同的动态规划解法,但本题明确限定单只股票

  • 货币转换的优雅处理 通过price[:-1]取数值部分,price[-1]判断货币类型,代码简洁且避免正则表达式开销

复杂度优化

  • 时间复杂度O(n):仅需一次遍历
  • 空间复杂度O(1):仅用常量存储max_profit和临时diff
  • 避免不必要的数据结构,直接边遍历边计算

实际应用扩展

该算法可应用于: 1. 量化交易中的简单收益测算 2. 外汇套利机会识别 3. 商品价格波动分析 4. 需注意实际市场还需考虑交易手续费等更多因素

平台体验建议

InsCode(快马)平台实践时,我发现几个亮点: 1. 直接网页操作无需配置Python环境 2. 生成的项目包含完整可执行代码 3. 修改输入样例后能立即看到新计算结果

对于需要持续服务的股票分析工具,还可以使用一键部署功能:

示例图片

建议尝试不同输入组合验证算法健壮性,比如混合极端价格、长序列等情况。平台实时反馈的特性非常适合快速验证这类算法题目。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SilvermistFalcon67

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值