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

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

感谢大家的三连支持!

相关推荐
罗湖老棍子18 分钟前
【例 2】选课(信息学奥赛一本通- P1576)
算法·树上背包·树型动态规划
每天要多喝水20 分钟前
动态规划Day33:编辑距离
算法·动态规划
每天要多喝水22 分钟前
动态规划Day34:回文
算法·动态规划
weixin_4772716925 分钟前
马王堆帛书《周易》系统性解读(《函谷门》原创)
算法·图搜索算法
AomanHao1 小时前
【ISP】基于暗通道先验改进的红外图像透雾
图像处理·人工智能·算法·计算机视觉·图像增强·红外图像
We་ct1 小时前
LeetCode 226. 翻转二叉树:两种解法(递归+迭代)详解
前端·算法·leetcode·链表·typescript
大熊背1 小时前
APEX系统中为什么 不用与EV0的差值计算曝光参数调整量
人工智能·算法·apex·自动曝光
REDcker1 小时前
HDR Vivid 技术介绍
数据库·算法·视频·sdr·屏幕·显示技术·dhr
ab1515171 小时前
2.18完成109、112、113
算法
追随者永远是胜利者2 小时前
(LeetCode-Hot100)64. 最小路径和
java·算法·leetcode·职场和发展·go