12.19 - 买卖股票的最佳时机 && const的作用

目录

1.买卖股票的最佳时机

a.核心思想

b.思路

c.步骤

2.const的作用


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的作用

本质:通过编译期强制约束,提升代码健壮性和可维护性,同时辅助优化。

核心作用:定义不可修改的变量或对象,保障数据安全性与代码可读性。

  1. 常量定义
    const int MAX = 100; → MAX 值不可修改,避免误操作。

  2. 指针保护

    • const int* p → 指针指向的值不可改
    • int* const p = &x → 指针地址不可改
    • const int* const p → 地址和值均不可改
  3. 函数参数/返回值的保护

    传递大型对象时避免拷贝,同时禁止修改:
    void func(const vector<int>& data)

  4. 成员函数的 const 属性

    声明成员函数不会修改类状态:
    int get() const; → 允许在 const 对象上调用

  5. 编译器优化

    允许编译器将 const 值直接嵌入代码,减少内存访问开销。

希望这些内容对大家有所帮助!

感谢大家的三连支持!

相关推荐
十二3 分钟前
【洛谷题解】P1083 [NOIP 2012 提高组] 借教室(二分答案 + 差分)
数据结构·c++·算法·蓝桥杯
小此方1 小时前
[算法实战论:动态规划]回文串问题的dp解法,回文串问题的母题,以及以此为基础的派生题
算法·动态规划
Pniubi2 小时前
力扣560.和为k的子数组
算法·leetcode·职场和发展
D e re k ZH2 小时前
C++ 从零入门(一):基础语法与程序结构
数据结构·c++·算法
Pniubi3 小时前
力扣438.找到字符串中所有字母异位词
算法·leetcode·职场和发展
zjxtxdy4 小时前
C++面向对象程序开发-类与对象
开发语言·c++
東隅已逝,桑榆非晚5 小时前
算法6. 双指针法-查找总价格为目标的两个商品
c++·学习·算法
Eyfcom5 小时前
〖物联网终端实战 01〗UWB 室内高精度定位:仓储 AGV 与人员的厘米级轨迹追踪
物联网·算法·物流系统·快递系统·跨境物流快递系统·物联网终端实战
qq_406981036 小时前
c++拷贝构造函数
开发语言·c++
bro_Java6666 小时前
《排序的底层逻辑:比较、交换与分治》
java·算法·排序算法