1.18 - 滑动窗口最大值 && 子类的指针转换为父类的指针,指针的值是否会改变

目录

1.滑动窗口最大值

a.核心思想

b.思路

c.步骤

2.子类的指针转换为父类的指针,指针的值是否会改变


1.滑动窗口最大值

239. 滑动窗口最大值 - 力扣(LeetCode)https://leetcode.cn/problems/sliding-window-maximum/

cpp 复制代码
class Solution {
public:
    vector<int> maxSlidingWindow(vector<int>& nums, int k) {
        deque<int> dq;
        vector<int> result;
        
        for (int i = 0; i < nums.size(); ++i) 
        {
            // 移除不在窗口范围内的索引
            if (!dq.empty() && dq.front() < i - k + 1) 
                dq.pop_front();
            
            // 移除比当前元素小的索引
            while (!dq.empty() && nums[dq.back()] < nums[i]) 
            {
                dq.pop_back();
            }
            
            // 添加当前索引到队列尾部
            dq.push_back(i);
            
            // 如果形成完整窗口,添加最大值到结果
            if (i >= k - 1) 
                result.push_back(nums[dq.front()]);
        }
        
        return result;
    }
};

a.核心思想

利用双端队列(deque)来维护一个滑动窗口中的潜在最大值的索引,使得队列中的索引对应的元素是单调递减的。这样,队列的头部始终是当前窗口中的最大值的索引。

b.思路

① 初始化一个双端队列 deque 和一个结果数组 result

② 遍历数组 nums,对于每个元素:

  • 移除队列中不在当前窗口范围内的索引。

  • 移除队列中对应元素小于当前元素的索引,因为这些元素不可能再成为后续窗口的最大值。

  • 将当前元素的索引添加到队列尾部。

  • 如果已经形成了一个完整的窗口(即遍历的元素数量大于等于 k),将队列头部的元素(即当前窗口的最大值)添加到结果数组中。

③ 返回结果数组。

c.步骤

① 定义一个双端队列 dq 和一个结果向量 result

② 遍历 nums 数组,索引为 i

  • 移除 dq 中所有索引小于 i - k + 1 的元素(这些元素已经不在当前窗口中)。

  • 移除 dq 中所有对应元素小于 nums[i] 的元素。

  • i 添加到 dq 的尾部。

  • 如果 i >= k - 1,将 nums[dq.front()] 添加到 result 中。

③ 返回 result

2.子类的指针转换为父类的指针,指针的值是否会改变

在C++中,单继承时子类指针转父类指针地址通常不变(指向同一基地址);多重继承或虚继承时,若父类子对象存在偏移,地址可能被调整(通过static_cast或隐式转换自动处理),但指针值本身可能改变。

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

感谢大家的三连支持!

相关推荐
Jerry2 小时前
LeetCode 189. 轮转数组
算法
Jerry3 小时前
LeetCode 739. 每日温度
算法
2601_954526757 小时前
【工业传感与算法实战】温漂补偿与零点抗漂破局:基于二阶多项式拟合的 C/C++ 边缘校准算法,深度拆解“压力变送器什么牌子好”的技术硬指标
c语言·c++·算法
code_pgf8 小时前
`unordered_map` 详解
c++
叩码以求索8 小时前
浅谈:算法萌新如何高效刷题应对面试(一)
算法·面试·职场和发展
一拳一个呆瓜9 小时前
【STL】iostream 编程:检测提取操作产生的错误
c++·stl
稚南城才子,乌衣巷风流10 小时前
判断素数与拓展应用
c++
众少成多积小致巨10 小时前
C++ 规范参考(下)
c++
c2385610 小时前
把 C++ 内存分配拆透:new 与 malloc 的三层血缘
开发语言·c++·算法
aaaameliaaa11 小时前
指针之总结
c语言·笔记·算法