数组算法 - 买卖股票的最佳时机
买卖股票的最佳时机
121. 买卖股票的最佳时机 - 力扣(LeetCode) 刷题时间:
- 25/12/25

我的解法
▼java复制代码class Solution { public int maxProfit(int[] prices) { int max = 0; for (int i = 0; i < prices.length - 1; i++) { for (int j = i + 1; j < prices.length; j++) { int cha = prices[j] - prices[i]; max = (cha > max) ? cha : max; } } return max; } }
优点
- 逻辑简单直接
- 计算了所有可能的组合
缺点
- 时间复杂度高. $O(n^2)$
- 重复计算, 内层循环重复计算了很多信息, 事实上,找到最低价格即可.
- 没有利用到题目问题的信息
题解
▼java复制代码class Solution { public int maxProfit(int[] prices) { if (prices == null || prices.length < 2) { return 0; } int minPrice = Integer.MAX_VALUE; // 最低价格 int maxProfit = 0; //最大利润 for (int price : prices) { // 更新最低价格 minPrice = price < minPrice ? price : minPrice; int profit = price - minPrice; // 当前价格所得利润 // 更新最大利润 maxProfit = profit > maxProfit ? profit : maxProfit; } return maxProfit; } }
思路
- 我的解法是两层循环,找到一对数据(i,j),计算比较出最大利润, 暴力解法
- 时间复杂度是$O(n^2)$,空间复杂度是$O(1)$. 方向就是减少内层循环, 降为$O(n)$.
- 题目信息: "最低点买入,最高点卖出", 内层循环的目的是"找到所有组合,比较出最大利润".
- 核心就是记录历史最低价格
- 用空间换时间, 用变量来存储
minPrice(历史最低价格)即可, 一次遍历,用price逐个与minPrice进行比较, 得到差值profit. - 就可以找到
maxProfit.
算法思想
- 贪心思想
- 在每一步选择中都采取当前状态下最优(最有利)的选择, 从而希望导致全局最优解的算法思想
-
- 局部最优 -> 全局最优
-
- 每次更新历史最低价总是正确的; 每次更新最大利润总是正确的
-
- 不可撤回: 当遇到最低价时, 就忘记之前的最低点; 只关注"到现在为止的最低点".
-
- 高效但不通用: 时间复杂度低, 但是不是所有问题都能用贪心解决

其他算法解法 后面有机会了, 再重新写写
- 动态规划
- 这个没看
- 单调栈
- 这个看了, 但是有点难理解
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
作者分享
Day 7
✅ 今天做了:云图库项目的 5-用户传图
1.通过URL传图 2.批量抓取和上传图片
⏰ 明天计划:最少把6-图片优化给做完!
📚 今日感悟:
做项目,真的耗时间,并不是将代码简单复制粘贴那么简单,还需要理解代码,运行跑起来调试,这些花的时间才是主要的!
3
字符串算法题 - 字符串相加
3
Day 6
✅ 今天做了:一道算法题(买卖股票的最佳时机), 一道八股(面向对象的三大特征)
『 数组算法 - 买卖股票的最佳时机 』💎 https://www.codefather.cn/post/2004184783197937665
⏰ 明天计划:一道算法,一道八股,项目
📚 今日感悟:算法还是先用暴力解法, 后面看题解是运用了贪心思想的一次遍历.
面向对象的三大特征, 封装是基础, 继承实现了代码的复用和扩展, 多态通过方法重载和方法重写实现了"同一接口,多种实现"的功能
4
Day 5
✅ 今天做了:写了两道八股题, 健身练了肩
⏰ 明天计划:项目, 两道算法, 一道八股
📚 今日感悟:效率好低啊, 早上学了, 下午健身,晚上有事. 效率真的太低了, 也就非健身日学习时间能长一点.
4
Day 4
✅ 今天做了:一道算法题, 一道八股
『 数组算法题 - 合并两个有序数组 』💎 https://www.codefather.cn/post/2003329467509977090
⏰ 明天计划:一道算法题, 两道八股, 云图库项目
📚 今日感悟:归并排序算法题, "抽象类和接口的区别(中)"八股
3
