zoukankan      html  css  js  c++  java
  • [转载]剑指 Offer 59

    题目链接

    代码

        public int[] maxSlidingWindow(int[] nums, int k) {
            // 考虑数组中只有一个数
            if (nums.length == 0 || k == 0) return new int[0];
            // 采用双端队列
            Deque<Integer> deque = new LinkedList<>();
            // 简单分析结果只有nums.length - k + 1个数
            int[] res = new int[nums.length - k + 1];
    
            // 先让队列中在k个数形成降序
            for (int i = 0; i < k; i++) { // 未形成窗口
                // 把队列中,从队尾开始,所有比当前nums[i]的数字抛出
                while (!deque.isEmpty() && deque.peekLast() < nums[i])
                    deque.removeLast();
                deque.addLast(nums[i]);
            }
    
            System.out.println(deque);
    
            // 第一个k个数中的最大值。
            res[0] = deque.peekFirst();
    
            // 然后在剩下的数字中接着
            for (int i = k; i < nums.length; i++) { // 形成窗口后
                // 如果当前的数字和前面k个数字中最大的数字相等,那么抛出队列中已经有的,当然这边是从头开始
                if (deque.peekFirst() == nums[i - k])
                    deque.removeFirst();
                // 这一步是关键,如果队尾数字比双端队列中的数字要大,那么说明
                while (!deque.isEmpty() && deque.peekLast() < nums[i])
                    deque.removeLast();
                deque.addLast(nums[i]);
                res[i - k + 1] = deque.peekFirst();
            }
            return res;
        }
    
    
        //作者:jyd
        //链接:https://leetcode-cn.com/problems/hua-dong-chuang-kou-de-zui-da-zhi-lcof/solution/mian-shi-ti-59-i-hua-dong-chuang-kou-de-zui-da-1-6/
        //来源:力扣(LeetCode)
        //著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    
  • 相关阅读:
    python主成分分析
    matplotlib绘图pie
    cpu监控:mpstat命令
    cpu监控:dstat
    MongoDB--安装部署
    Linux-网络管理
    Apache 虚拟主机配置
    Apache 访问控制
    Apache 域名跳转配置
    Apache 日志管理
  • 原文地址:https://www.cnblogs.com/bears9/p/13845479.html
Copyright © 2011-2022 走看看