目录
1.买卖股票的最佳时机
121. 买卖股票的最佳时机 - 力扣(LeetCode)
https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/
cpp
class Solution {
public:
int maxProfit(vector<int>& prices) {
int min_price = INT_MAX;
int max_profit = 0;
for (int i = 0; i < prices.size(); i++)
{
min_price = min(min_price, prices[i]);
max_profit = max(max_profit, prices[i] - min_price);
}
return max_profit;
}
};
a.核心思想
通过一次遍历数组,记录当前遇到的最小价格(即最低买入价),同时计算当前价格与最小价格的差值(即当前卖出可能获得的利润),不断更新最大利润值。
b.思路
在遍历股票价格数组时,对于每一天的价格,我们有两种选择相关的逻辑考量:一是如果在这一天卖出股票,那么之前记录的最低买入价对应的买入时机加上当前卖出价能获得的利润情况;二是更新最低买入价,以便后续计算利润。通过比较和更新最大利润,最终得到能获取的最大利润值。
c.步骤
① 初始化两个变量,
min_price用于记录遍历过程中遇到的最低价格,初始值设为一个较大的数(比如INT_MAX);max_profit用于记录最大利润,初始值为0。② 遍历股票价格数组
prices。③ 在遍历过程中,首先更新
min_price,将其设为当前min_price和当前价格prices[i]中的较小值。④ 然后计算当前价格与
min_price的差值,即当前卖出可能获得的利润,将其与max_profit比较,取较大值更新max_profit。⑤ 遍历结束后,返回
max_profit。
2.const的作用
本质:通过编译期强制约束,提升代码健壮性和可维护性,同时辅助优化。
核心作用:定义不可修改的变量或对象,保障数据安全性与代码可读性。
常量定义
const int MAX = 100;→MAX值不可修改,避免误操作。指针保护
const int* p→ 指针指向的值不可改int* const p = &x→ 指针地址不可改const int* const p→ 地址和值均不可改函数参数/返回值的保护
传递大型对象时避免拷贝,同时禁止修改:
void func(const vector<int>& data)成员函数的 const 属性
声明成员函数不会修改类状态:
int get() const;→ 允许在 const 对象上调用编译器优化
允许编译器将 const 值直接嵌入代码,减少内存访问开销。
希望这些内容对大家有所帮助!
感谢大家的三连支持!