首页 > 其他分享 >Day 13| 239. 滑动窗口最大值、 347.前 K 个高频元素

Day 13| 239. 滑动窗口最大值、 347.前 K 个高频元素

时间:2024-06-03 22:11:28浏览次数:26  
标签:13 num int res 347 dict 239 key que

239. 滑动窗口最大值 (一刷至少需要理解思路)

之前讲的都是栈的应用,这次该是队列的应用了。

本题算比较有难度的,需要自己去构造单调队列,建议先看视频来理解。

题目链接/文章讲解/视频讲解:https://programmercarl.com/0239.滑动窗口最大值.html

思考

用单调队列实现,太难了,超过能力范围了,跳过。

347.前 K 个高频元素 (一刷至少需要理解思路)

大/小顶堆的应用, 在C++中就是优先级队列

本题是 大数据中取前k值 的经典思路,了解想法之后,不算难。

题目链接/文章讲解/视频讲解:https://programmercarl.com/0347.前K个高频元素.html

思考

  1. 哈希+内置排序
class Solution:
    def topKFrequent(self, nums: List[int], k: int) -> List[int]:
        num_dict = defaultdict(int)
        for c in nums:
            num_dict[c]+=1
        index_dict = defaultdict(list)
        for key in num_dict:
            index_dict[num_dict[key]].append(key)
        keys = list(index_dict.keys())
        keys.sort(reverse=True)
        cnt = 0
        res = []
        for key in keys:
            res+=index_dict[key]
            cnt=len(res)
            if cnt == k:
                break
        return res
class Solution:
    def topKFrequent(self, nums: List[int], k: int) -> List[int]:
        num_dict = defaultdict(int)
        for c in nums:
            num_dict[c]+=1
        kvlist = [] 
        for num,freq in num_dict.items():
            kvlist.append((freq,num))
        kvlist.sort(key=lambda x:x[0],reverse=True)    
        res = []
        for item in kvlist[:k]:
            res.append(item[1])
        return res
  1. 哈希+最小堆
import heapq
class Solution:
    def topKFrequent(self, nums: List[int], k: int) -> List[int]:
        num_dict = defaultdict(int)
        for c in nums:
            num_dict[c]+=1
        pri_que = [] #小顶堆
        for num,freq in num_dict.items():
            heapq.heappush(pri_que,(freq,num))
            if len(pri_que)>k:
                heapq.heappop(pri_que) 
        res = []
        print(pri_que)
        for item in pri_que:
            res.append(item[1])
        return res

标签:13,num,int,res,347,dict,239,key,que
From: https://www.cnblogs.com/forrestr/p/18229785

相关文章

  • 代码随想录算法训练营day13(栈与队列)
    代码随想录算法训练营day:学习内容:今天主要学习队列239347学习产出:239一开始想着直接暴力遍历,但是时间复杂度为nk。采用deque实现一个单调队列,因为我们需要一个队列,这个队列呢,放进去窗口里的元素,然后随着窗口的移动,队列也一进一出,每次移动之后,队列告诉我们里面的最......
  • 1134高精度阶乘(数组)
    #include<stdio.h>#defineN3000//定义数组长度intmain(){inta[N],i,j,k,n;while(scanf("%d",&n)!=EOF){ for(i=0;i<N;i++)//初始化数组 a[i]=0; a[0]=1;//第一位设为1 k=0;//记录进位坐标 for(i=1;i<=n;i++)//计算阶乘......
  • 【文末附gpt升级秘笈】关于论文“7B?13B?175B?解读大模型的参数的论文
    论文大纲引言简要介绍大模型(深度学习模型)的概念及其在各个领域的应用。阐述参数(Parameters)在大模型中的重要性,以及它们如何影响模型的性能。引出主题:探讨7B、13B、175B等参数规模的大模型。第一部分:大模型的参数规模定义“B”代表的意义(Billion/十亿)。解释7B、13B、175B等......
  • ABC 313C Approximate Equalization 2
    题意现在给出一个数组a[n],现在你可以进行这种操作:选择i,j(1<=i,j<=n),使得a[i]=a[i]-1,a[j]=a[j]+1现在你可以进行无限次这种操作,现在需要你求出最少次数,使得数组中的最大值与最小值之间的差不超过1。思路我们考虑到每一次操作可以使得数组中的一个数加一,另一个数减一,那么无......
  • CSP历年复赛题-P1982 [NOIP2013 普及组] 小朋友的数字
    原题链接:https://www.luogu.com.cn/problem/P1982题意解读:特征值:第i个同学的特征值是1~i中最大子段和,分数:第i个同学分数是前1~i-1个同学的分数+特征值最大值,求最大分数。解题思路:第一步:先计算特征值f[i],f[i]等于1~i中所有数的最大子段和,所以借助最大子段和的DP方法,每次计算以i......
  • [ICPC2024 Xi‘an I] ICPC2024 邀请赛西安站(7/8/13)
    心得[ICPC2024Xi'anI]ICPC2024邀请赛西安站重现赛-比赛详情-洛谷7表示赛时ac了7个,8表示含补题总共ac数,13表示题目总数题目M. ChainedLights打表,发现只有k=1是YES//#include<bits/stdc++.h>#include<iostream>#include<cstdio>#include<vector>#include<ma......
  • MySQL从入门到高级 --- 12.事务 && 13.锁机制 && 14.日志
    文章目录第十二章&&第十三章&&第十四章:12.事务12.1特性12.2隔离级别13.锁机制13.1各存储引擎对锁的支持状况:13.2锁特性13.3MyISAM表锁13.3.1加表锁13.4InnoDB行锁13.4.1行锁特点13.4.2行锁模式14.日志14.1错误日志14.2二进制日志14.2.1日志格式14.3......
  • ZCMU-1133
    emm就直接看的前辈的了。唉#include<stdio.h>#include<string.h>#include<algorithm>//我不成熟的想法是两成遍历//但感觉会时间超限,但没有先想到深度搜索usingnamespacestd;intn,t;intnum[101];//存放输入情况intr[101];//记录可能情况boolflag;v......
  • 1319:【例6.1】排队接水
    题目网址:信息学奥赛一本通(C++版)在线评测系统题目介绍:1319:【例6.1】排队接水时间限制:1000ms      内存限制:65536KB提交数:45180   通过数: 22285【题目描述】有n�个人在一个水龙头前排队接水,假如每个人接水的时间为Ti��,请编程找出这n�个人排队的一种顺......
  • 《计算机网络微课堂》实验13 静态路由配置错误导致的路由环路问题
    下面我们来进行一个仿真实验,本仿真实验的目的在于验证静态路由配置错误所导致的路由环路问题。我已经在软件中构建好了我们理论课讲解时所用到的网络拓扑,并且给网络中的各设备都配置了相应的IP地址和地址掩码。对于网络中的各个主机,我还为他们指定了默认网关,对于网络中的各个......