首页 > 其他分享 >day13 打卡239. 滑动窗口最大值 347.前 K 个高频元素

day13 打卡239. 滑动窗口最大值 347.前 K 个高频元素

时间:2023-03-13 15:23:52浏览次数:53  
标签:num int 347 que 239 new 打卡 result

day13 打卡239. 滑动窗口最大值 347.前 K 个高频元素

239. 滑动窗口最大值

239题目链接

1.看了视频在写的

class Solution {
    public int[] maxSlidingWindow(int[] nums, int k) {
        int index = 0;
        int[] result = new int[nums.length - k + 1];
        ArrayDeque<Integer> que = new ArrayDeque<Integer>();
        for (int i = 0 ; i<nums.length ; i++) {
            // 检查队列里的元素是否在k的范围之内
            while (!que.isEmpty() && !(que.peek() >= index && que.peek() <= index+k-1)) {
                que.poll();
            }

            // 如果队列里的元素<要加入的元素,队列里的元素都弹出
            // 因为要保证单调的,从大到小
            // 不然可能出现 队列里有3,1,2。等3出去了,进来1,跟顶部1比较,但是2更大
            while (!que.isEmpty() && nums[que.peekLast()]<nums[i]) {
                que.pollLast();
            }
            que.offer(i);

            if (i>=k-1) {
                result[index++] = nums[que.peek()];
            }
        }
        return result;
    }
}

347.前 K 个高频元素

347题目链接

1.看视频后写的代码

class Solution {
    public int[] topKFrequent(int[] nums, int k) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int num: nums) {
            map.put(num, map.getOrDefault(num, 0)+1);
        }

        // 创建小顶堆,从小到大。保存的是数组,0:num,1:num出现的次数
        PriorityQueue<int[]> que = new PriorityQueue<>((o1, o2) -> o1[1] - o2[1]);

        for (Map.Entry<Integer, Integer> entry: map.entrySet()) {
            int count = entry.getValue();
            if (que.size() >= k) {
                // 每次将多余的数值弹出
                if (que.peek()[1] < count) {
                    que.poll();
                    que.add(new int[]{entry.getKey(), count});
                }
            } else {
                que.add(new int[]{entry.getKey(), count});
            }
        }

        int[] result = new int[k];
        for (int i = k-1; i>=0 ; i--) {
            result[i] = que.poll()[0];
        }
        return result;
    }
}

参考资料

代码随想录

标签:num,int,347,que,239,new,打卡,result
From: https://www.cnblogs.com/zzzsl/p/17211551.html

相关文章

  • 代码随想录 239. 滑动窗口最大值 | 347.前 K 个高频元素
    239. 滑动窗口最大值给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向......
  • 每日打卡
    练习:1:  源码:n=int(input())num=0sum=0foriinrange(n):dic=eval(input())forjindic:temp=dic[j]forkeyintemp:num+=1......
  • day11 打卡20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求
    day11打卡20.有效的括号1047.删除字符串中的所有相邻重复项150.逆波兰表达式求值20.有效的括号20题目链接1.本来使用的是Stack,时间2ms,内存39.6MB。而Deque时间......
  • 每日打卡
    java数组:publicclassTestArray{publicstaticvoidmain(String[]args){//数组大小intsize=10;//定义数组double[]myList=newd......
  • day10 打卡232. 用栈实现队列 225. 用队列实现栈
    day10打卡232.用栈实现队列225.用队列实现栈232.用栈实现队列232题目链接classMyQueue{//管理进的元素Stack<Integer>stackIn;//管理出的元素......
  • 每日打卡
    练习python编程:代码:a,b=input().split(',')a1,b1=a.strip(),int(b.strip())print(a1*b1)结果:   代码:a,b=input().split(',')b=int(b)print(int......
  • 每日打卡APP界面优化与功能完善
    每日打卡APP界面优化与功能完善   ......
  • 1239. 乘积最大
    https://www.acwing.com/problem/content/description/1241/1e5的数据量,显然不能暴搜,但是我还是要暴搜显然寄了,只能过一半数据,这题的正确做法应该分情况讨论#include<......
  • 每日打卡
    主界面:<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>主页</t......
  • 测试开发-怎么能忘记打卡呢-神器AppleScript
    写在前面昨天的主题反响不错,今天继续给大家介绍一款我自认为比较好用的东西,MacOS下的AppleScript,AppleScript像是mac电脑给开发者留下的一个入口一样,他不同于其他语言......