美文网首页
子串——滑动窗口(八)

子串——滑动窗口(八)

作者: 旺叔叔 | 来源:发表于2018-11-22 17:20 被阅读0次

LeetCode_239_SlidingWindowMaximum

题目分析:

这题其实和之前题目没有什么关系。放在这,只是因为经典,并且,暂时不知道放其他哪里。
考察的是队列的应用,窗口每次滑动都要删掉一个值,并新增一个值,并取一个最大值。
那么如果构建一个结构,能够高效地增删取最大即可。
维护一个降序队列
查就是队头
增就删队尾更小的
删最有意思,删除的如果是队头就删头,否则不删。
看代码就懂。

解法:

public static int[] maxSlidingWindow(int[] nums, int k) {
    if(nums.length == 0)
        return nums;
    Stack<Integer> vec = new Stack<>();
    int result[] = new int[nums.length - k + 1];

    for (int i = 0; i < k; i++)
        putIn(vec, nums[i]);

    for (int i = k,j = 0; i < nums.length; i++,j++) {
        result[j] = vec.firstElement();
        getOut(vec, nums[j]);
        putIn(vec, nums[i]);
    }
    result[result.length - 1] = vec.firstElement();

    return result;
}

/**
 * T掉小于等于我的 保持队列单调递减
 */
public static void putIn(Stack<Integer> vec, int value){
    while (! vec.empty()) {
        if(vec.lastElement() < value)
            vec.pop();
        else
            break;
    }
    vec.push(value);
}

/**
 * 不是最大的不T
 */
public static void getOut(Stack<Integer> vec, int value){
    if(vec.firstElement() == value)
        vec.removeElementAt(0);
}

相关文章

  • 子串——滑动窗口(八)

    LeetCode_239_SlidingWindowMaximum 题目分析: 解法:

  • 滑动窗口

    核心:如何收缩窗口?具体收缩到哪? 遍历字符串,利用 set 结构存储子串(滑动窗口) 当前字符在滑动窗口中是否存...

  • 子串问题(滑动窗口)

    1.无重复字符的最长子串(3 - 中/剑指48) 题目描述:给定一个字符串,请你找出其中不含有重复字符的 最长子串...

  • LeetCode之滑动窗口法详解

    一 滑动窗口 滑动窗口法(sliding window)常用于输入为数组,输出为统计满足特定约束条件的子串次数的情...

  • 滑动窗口

    滑动窗口用途 用于解决连续子串、连续子数组问题 模式说明 用两个指针,标识窗口边界 用一些状态变量标识窗口当前状态...

  • 面试常见算法与解答

    1、最长不含重复字符的子字符串思路:滑动窗口+检测到重复的进行重新切割

  • 算法(1)最大不重复子串

    LeetCode 算法题,最大不重复子串 使用滑动窗口办法解决:窗口有两个坐标,start(i)和end(j),起...

  • 滑动窗口2:串联所有单词的子串

    串联所有单词的子串 解答 思路 该题可以使用滑动窗口求解。窗口长度为words的总长度,窗口从左到右移动一位,按照...

  • 滑动窗口解决字符串子串问题

    对很多给定一个字符串,然后要求找到一个满足一定条件的子串的问题,一种比较通用的做法是借助一个MAP,或者是等价的i...

  • 滑动窗口之三体会-队列本质 2021-02-21(未允禁转)

    系列链接1.滑动窗口问题(统计型约束的连续子串问题)2020-05-27[https://www.jianshu....

网友评论

      本文标题:子串——滑动窗口(八)

      本文链接:https://www.haomeiwen.com/subject/ldtrqqtx.html