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

解题思路详解
问题核心分析
这道华为OD机试题要求实现股票交易的最大收益计算,主要考察三个关键点: 1. 混合货币单位的处理(人民币Y和美元S) 2. 单只股票持仓限制下的收益累计规则 3. 时间复杂度控制在O(n)内的遍历算法
实现步骤拆解
- 数据预处理阶段
- 使用split()方法将输入字符串按空格分割成价格列表
-
创建convert_price函数处理货币单位转换:
- 截取末尾字符判断货币类型
- Y结尾直接取数值,S结尾需乘以7换算为人民币
-
核心算法逻辑
- 初始化max_profit为0记录总收益
- 从第二天开始遍历价格列表(索引1到n-1)
- 计算当日与前一日差价diff = price[i] - price[i-1]
-
仅当diff为正数时才累加到max_profit
-
边界情况处理
- 空输入或单日价格返回0
- 持续下跌行情收益为0(如样例6/9)
- 美元换算时注意整型运算精度
关键问题解析
- 为什么采用相邻交易日差价累计? 在单只股票持仓限制下,最优策略等同于所有正差价的累加。例如样例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. 修改输入样例后能立即看到新计算结果
对于需要持续服务的股票分析工具,还可以使用一键部署功能:

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

被折叠的 条评论
为什么被折叠?



