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或隐式转换自动处理),但指针值本身可能改变。

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

感谢大家的三连支持!

相关推荐
那个村的李富贵10 小时前
CANN加速下的AIGC“即时翻译”:AI语音克隆与实时变声实战
人工智能·算法·aigc·cann
power 雀儿10 小时前
Scaled Dot-Product Attention 分数计算 C++
算法
Yvonne爱编码10 小时前
JAVA数据结构 DAY6-栈和队列
java·开发语言·数据结构·python
熬夜有啥好11 小时前
数据结构——哈希表
数据结构·散列表
琹箐11 小时前
最大堆和最小堆 实现思路
java·开发语言·算法
renhongxia111 小时前
如何基于知识图谱进行故障原因、事故原因推理,需要用到哪些算法
人工智能·深度学习·算法·机器学习·自然语言处理·transformer·知识图谱
坚持就完事了11 小时前
数据结构之树(Java实现)
java·算法
算法备案代理11 小时前
大模型备案与算法备案,企业该如何选择?
人工智能·算法·大模型·算法备案
赛姐在努力.12 小时前
【拓扑排序】-- 算法原理讲解,及实现拓扑排序,附赠热门例题
java·算法·图论
我能坚持多久12 小时前
【初阶数据结构01】——顺序表专题
数据结构