美文网首页
2021-03-30极客时间打卡

2021-03-30极客时间打卡

作者: 程博颖 | 来源:发表于2021-03-31 22:10 被阅读0次

剑指 Offer 59 - II. 队列的最大值https://leetcode-cn.com/problems/dui-lie-de-zui-da-zhi-lcof/
给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。

输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3
输出: [3,3,5,5,6,7]

public int[] maxSlidingWindow(int[] nums, int k) {
        int length = nums.length;
        if(length == 0){
            return new int[0];
        }
        int max = Integer.MIN_VALUE;
        int maxInd = -1;
        int[] res = new int[length-k+1];
        for(int i =0;i<length-k+1;i++){
            if(maxInd >= i){
                if(max < nums[i+k-1]){
                    max = nums[i+k-1];
                    maxInd = i+k-1;
                }
            }else{
                max = nums[i];
                for(int j =i+1;j<i+k;j++){
                    if(max < nums[j]){
                        max = nums[j];
                        maxInd = j;
                    }
                }
            }
            res[i] = max;
        }
        return res;
    }

剑指 Offer 59 - I. 滑动窗口的最大值https://leetcode-cn.com/problems/hua-dong-chuang-kou-de-zui-da-zhi-lcof/
请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。
若队列为空,pop_front 和 max_value 需要返回 -1

输入:
["MaxQueue","push_back","push_back","max_value","pop_front","max_value"]
[[],[1],[2],[],[],[]]
输出: [null,null,null,2,1,2]

Queue<Integer> queue;
        LinkedList<Integer> max;

        public MaxQueue() {
            queue = new LinkedList<>();
            max = new LinkedList<>();
        }

        public int max_value() {
            return max.size() == 0 ? -1 : max.getFirst();
        }

        public void push_back(int value) {
            queue.add(value);
            while (max.size() != 0 && max.getLast() < value) {
                max.removeLast();
            }
            max.add(value);
        }

        public int pop_front() {
            if (max.size() != 0 && queue.peek().equals(max.getFirst()))
                max.removeFirst();
            return queue.size() == 0 ? -1 : queue.poll();
        }

相关文章

  • 2021-03-30极客时间打卡

    剑指 Offer 59 - II. 队列的最大值https://leetcode-cn.com/problems/...

  • 极客时间每日打卡小记

    最近在极客时间APP上参加21天打卡活动,虽说21天是否能养成习惯还不确定,但坚持了5天下来,有些收获,和你分享一...

  • 极客时间11天打卡

    今天学习的设计模式之美的迭代器模式,主要分了三篇来讲. 一般情况下,迭代器模式都是一门编程语言提供了,用来遍历基本...

  • 极客时间-技术编程类课程产品分析报告

    【极客时间】 极客时间是极客邦科技出品的IT类知识服务产品,内容包含专栏订阅、极客新闻、热点专题、直播、视频和音频...

  • 极客时间

    《极客时间》程序员时间管理的笔记 JIT的理解 编译和解释的区别。 jdk8函数式编程 23种设计模式,是道与术的...

  • 极客时间

    微信搜索公众号:矿洞程序员。回复:极客时间

  • 极客时间

    我的已购专栏。 左耳听风 黄勇的OKR实战笔记 Kafka核心技术与实战 OpenResty从入门到实战 Java...

  • 极客时间,课程优惠码

    1.极客时间代码精进之路优惠码 极客时间Andorid开发高手课优惠码Android开发高手课 3.极客时间趣谈网...

  • 极客时间第2天打卡

    打卡内容

  • 极客时间第3天打卡

    今天学习了争哥的行为型设计模式. 观察者设计模式:同步的,异步的,同一个进程的,不同进程之间都可以用到观察者模式....

网友评论

      本文标题:2021-03-30极客时间打卡

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