
Objective-C实现找出买卖股票的最大利润算法(附完整源码)
初始化两个数组: 遍历股票价格数组,逐天更新最低价格和最大利润。 对于每一天,计算当天的利润(当前股价减去最低价格),并与现有的最大利润比较,取较大者作为当天的最大利润。 最终, 减少不必要的遍历:避免在已知最大利润时重新遍历数组,直接返回结果。 提高效率:使用整数类型进行计算,减少内存占用和计算时间。 保持简洁:避免添加冗余的注释和操作,确保代码易于阅读和维护。
发布日期:2025-04-25 23:52:49
浏览次数:3
分类:精选文章
本文共 969 字,大约阅读时间需要 3 分钟。
在股票买卖问题中,目标是找到最佳的买入和卖出时机,以实现最大利润。这个经典问题可以通过一次遍历数组来高效解决,时间复杂度为 O(n)。
算法思路
本题属于动态规划问题,主要思想是通过记录每天的最小值和当天的股价变化,逐步计算出最大利润。具体步骤如下:
minProfit
和 maxProfit
。minProfit[i]
表示到第 i 天为止的最低价格,maxProfit[i]
表示到第 i 天为止的最大利润。maxProfit[n-1]
即为最大可获利的交易次数。实现细节
在 Objective-C 中,可以通过遍历数组来实现这一逻辑。以下是代码示例:
@interface StockProfit : NSObject- (NSInteger)maxProfit:(NSArray *)prices;{ if ([prices count] < 2) return 0; int minProfit = prices[0]; int maxProfit = 0; for (int i = 1; i < [prices count]; i++) { if (prices[i] - minProfit > maxProfit) { maxProfit = prices[i] - minProfit; } else if (prices[i] < minProfit) { minProfit = prices[i]; } } return maxProfit;}@end
优化建议
通过上述优化,本算法实现了在 O(n) 时间复杂度内解决股票买卖问题的目标,适用于处理较大规模的数据。
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月22日 03时51分52秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!