文章目录
- 题目简介
- 题目解答
- 解法一:一次遍历
- 代码:
- 复杂度分析:
- 题目链接
大家好,我是晓星航。今天为大家带来的是 买卖股票的最佳时机面试题Ⅰ 相关的讲解!😀
题目简介
题目解答
解法一:一次遍历
假设给定的数组为:[7,1,5,3,6,4]
思路:
代码:
class Solution {
public int maxProfit(int[] prices) {
int minprice = Integer.MAX_VALUE;
int maxprofit = 0;
for (int i = 0;i < prices.length; i++) {
if (prices[i] < minprice) {
minprice = prices[i];
} else if (prices[i] - minprice > maxprofit) {
maxprofit = prices[i] - minprice;
}
}
return maxprofit;
}
}
将利润初始化为0,最低价格初始化为整形的最大值,这种做法通常用于初始化一个表示最小值的变量,这样在后续的比较中,如果有更小的值被找到,就可以更新 minprice 的值。
使用for循环遍历一次数组,如果有价格比当前最低成本之minprice还低,就将minprice更新为prices当前取到的值。如果在遍历的时候maxprofit最大利润有更高的,就将最大利润替换为prices[i]-minprice(利润=销售额-成本)。
按照题目要求返回最大利润
复杂度分析:
- 时间复杂度:O(n),只需要遍历一次。
- 空间复杂度:O(1),只使用了常数个变量。
题目链接
121.买卖股票的最佳时机
感谢各位读者的阅读,本文章有任何错误都可以在评论区发表你们的意见,我会对文章进行改正的。如果本文章对你有帮助请动一动你们敏捷的小手点一点赞,你的每一次鼓励都是作者创作的动力哦!😘