当前位置: 首页 > news >正文

滑动窗口最大值和前K个高频元素

滑动窗口最大值和前K个高频元素

239. 滑动窗口最大值

核心:建立一个单调队列,维护里面的最大值,并且从大到小的顺序即可!【只需要维护有可能成为窗口里最大值的元素就可以了,同时保证队列里的元素数值是由大到小的。
from collections import deque
class MyQueue:def __init__(self):self.queue = deque()# 弹出的时候需要比较出口元素是否相等!相等弹出def pop(self,value):if self.queue and value == self.queue[0]:self.queue.popleft()# 维护队列中的元素的从大到小的def push(self, value):while self.queue and value > self.queue[-1]:self.queue.pop()self.queue.append(value)def front(self):return self.queue[0]
# 先判断前面的元素弹出,在插入后面的元素
class Solution:def maxSlidingWindow1(self, nums: List[int], k: int) -> List[int]:que = MyQueue()result = []for i in range(k):que.push(nums[i])result.append(que.front())for i in range(k,len(nums)):# 滑动窗口移除到最前面元素que.pop(nums[i - k])# 滑动窗口前加入最后的元素que.push(nums[i])result.append(que.front())return resultdef maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:# 自己实现单调队列que = []result = []for i in range(k):while que and que[-1] < nums[i]:que.pop(-1) # list.pop()时间复杂度是o(N) 这里会超时que.append(nums[i])result.append(que[0])for i in range(k,len(nums)):if que and que[0] == nums[i - k]:que.pop(0)while que and que[-1] < nums[i]:que.pop(-1)que.append(nums[i])result.append(que[0])return result

347. 前 K 个高频元素

核心:利用字典排序的一些方法!这些方法比较解题关键!
第一种
f = zip(d.keys(), d.values())
c =sorted(f)
第二种
a = sorted(d.items(), key=lambda x: x[1])
a1 = sorted(d.items(),key = lambda x:x[1],reverse = True)
import heapq
class Solution:def topKFrequent1(self, nums: List[int], k: int) -> List[int]:dict_1 = {}res = []for v in nums:if v in dict_1:dict_1[v] += 1else:dict_1[v] = 1a1 = sorted(dict_1.items(),key = lambda x:x[1],reverse = True)# print(a1)for i in a1[:k]:res.append(i[0])return res# 使用堆来实现def topKFrequent(self, nums: List[int], k: int) -> List[int]:map_ = {}# 统计元素出现的频率for i in range(len(nums)):map_[nums[i]] = map_.get(nums[i], 0) + 1 # 对map进行排序# 定义一个小顶堆 大小为kpri_que = []for key, value in map_.items():heapq.heappush(pri_que, (value, key))if len(pri_que) > k: # 如果堆的大小大于了K 则队列弹出,保证对大小为kheapq.heappop(pri_que)result = [0] * kfor i in range(k - 1, -1, -1):result[i] = heapq.heappop(pri_que)[1]return result

相关文章:

滑动窗口最大值和前K个高频元素

滑动窗口最大值和前K个高频元素 239. 滑动窗口最大值 核心&#xff1a;建立一个单调队列&#xff0c;维护里面的最大值&#xff0c;并且从大到小的顺序即可&#xff01;【只需要维护有可能成为窗口里最大值的元素就可以了&#xff0c;同时保证队列里的元素数值是由大到小的。…...

C语言实现在顺序表中找到最大值

用C语言实现在顺序表中找到最大值&#xff1a; #include <stdio.h> #define MAX_SIZE 100 int findMax(int arr[], int size) { int max arr[0]; // 假设第一个元素为最大值 for (int i 1; i < size; i) { // 从第二个元素开始遍历列表 if (…...

数字工厂管理系统建设层级分为哪几层

随着工业4.0时代的到来&#xff0c;数字工厂已成为制造业转型升级的必经之路。数字工厂管理系统作为数字工厂的核心组成部分&#xff0c;对于提高生产效率、降低成本、提升质量等方面具有重要意义。数字工厂管理系统的建设层级一般分为以下几个层次&#xff0c;本文将对其进行详…...

MySQL 8 update语句更新数据表里边的数据

数据重新补充 这里使用alter table Bookbought.bookuser add userage INT after userphone;为用户表bookuser在userphone列后边添加一个类型为INT的新列userage。 使用alter table Bookbought.bookuser add sex varchar(6) after userage ;为用户表bookuser在userage 列后边添…...

可视化监控云平台/智能监控平台EasyCVR国标设备开启音频没有声音是什么原因?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。GB28181视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、云存…...

L1-039:古风排版

题目描述 中国的古人写文字&#xff0c;是从右向左竖向排版的。本题就请你编写程序&#xff0c;把一段文字按古风排版。 输入格式&#xff1a; 输入在第一行给出一个正整数N&#xff08;<100&#xff09;&#xff0c;是每一列的字符数。第二行给出一个长度不超过1000的非空字…...

树莓派新手装机指南

如果你决定买一个树莓派&#xff0c;那么你一定已经了解过&#xff0c;不需要再做多余的介绍&#xff0c;由于之前就玩过树莓派&#xff0c;还是想弄一个属于自己的树莓派&#xff0c;因为它就像一个微型电脑&#xff0c;耗电非常低&#xff0c;我可以在家里24小时开机&#xf…...

flink使用事件时间时警惕kafka不同分区的事件时间倾斜问题

背景 flink和kafka的消息组合消费模式几乎是实时流处理的标配&#xff0c;然后当在flink中使用事件时间处理时&#xff0c;需要注意kafka不同分区元素之间时间相差太大的问题&#xff0c;这样有可能会导致严重的数据堆积问题 kafka不同分区元素事件时间差异较大导致的问题 总…...

『App自动化测试之Appium基础篇』| Desired Capabilities详解与使用

App自动化测试之Appium基础篇』| Desired Capabilities详解与使用 1 关于appium driver2 安装appium driver3 安装Appium Python Client4 安装测试对象5 获取测试对象信息5.1 使用dumpsys5.2 使用AndroidKiller5.3 使用aapt 6 Capabilities详解6.1 Capabilities介绍6.2 automat…...

vscode插件webview和插件通信

如果你要在 VS Code 插件的 WebView 中调用插件中的方法&#xff0c;可以使用 vscode.postMessage API。具体步骤如下&#xff1a; 在插件中&#xff0c;在创建 WebView 时&#xff0c;指定一个 onDidReceiveMessage 回调方法&#xff0c;该方法会在 WebView 中调用 vscode.po…...

【STM32单片机】贪吃蛇游戏设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器&#xff0c;使用IIC OLED模块、按键等。 主要功能&#xff1a; 系统运行后&#xff0c;OLED显示游戏界面&#xff0c;可通过K1-K4键控制蛇的方向&#xff0c;当蛇吃…...

【Java 基础】32 定时调度

文章目录 Timer 类创建 Timer注意事项 ScheduledExecutorService 接口创建 ScheduledExecutorService注意事项 选择合适的定时调度方式Timer 的适用场景ScheduledExecutorService 的适用场景 总结 在软件开发中&#xff0c;定时任务是一种常见的需求&#xff0c;用于周期性地执…...

C++ 教程 - 02 复合数据类型

文章目录 数组vector字符串输入输出结构体枚举指针引用综合案例 数组 相同类型的数据的集合{ }&#xff0c;通过索引访问元素&#xff1b;在内存中连续存储&#xff0c;属于顺序表&#xff1b;插入、删除时间复杂度 O ( n ) O(n) O(n)&#xff0c;访问复杂度 O ( 1 ) O(1) O(1…...

【数据处理】NumPy数组的合并操作,如何将numpy数组进行合并?

&#xff0c;NumPy中的合并操作是指将两个或多个数组合并成一个数组的操作。这种操作可以通过不同的函数来实现。 一、横向合并&#xff08;水平合并&#xff09; 横向合并是指将两个具有相同行数的数组按列方向合并成一个数组的操作。在NumPy中&#xff0c;可以使用hstack()…...

JavaScript实现飘窗功能

实现飘窗功能很简单 html代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title…...

Docker笔记:容器转换成镜像,导出导入镜像,数据拷贝,查看日志

docker commit 将容器转换成镜像 可以把容器转换成镜像镜像没有写入权限&#xff0c;但可以通过修改容器把容器制作成新镜像启动容器后&#xff0c;就给容器提供了一个可写层&#xff0c; 在容器里&#xff0c;可安装软件&#xff0c;可创建文件 …转换成镜像&#xff0c;之后…...

串行计时芯片D1380/D1381,2.0V~5.5V 工作电流: 2V时 与TTL 兼容,采用DIP8、SOP8封装

D1380/D1381是一个带秒、分、时、日、日期、月、年的串行时钟保持芯片,每个月多少天以及闰年能自动调节, D1380/D1381低功耗工作方式, D1380/D1381用若干寄存器存储对应信息&#xff0c;一个32.768kHz 的晶振校准时钟&#xff0c;为了使用最小弓|脚&#xff0c;D1380/D1381使用…...

中间件系列 - Redis入门到实战(基础篇)

前言 1.学习视频&#xff1a; 黑马程序员Redis入门到实战教程&#xff0c;深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目 2. 本内容仅用于个人学习笔记&#xff0c;如有侵扰&#xff0c;联系删除 3. 本章学习目标&#xff1a; 初始Redis 认识NoSQL认识Redi…...

项目经理和产品经理该如何选择?

最近很多人咨询“项目经理跟产品经理该怎么选&#xff0c;我更适合哪个&#xff1f;”“项目经理跟产品经理哪个更有钱途 ”“项目经理转产品经理好转吗”等等&#xff0c;今天就一次性说清楚项目经理跟产品经理有什么区别&#xff0c;应该怎么选择。 不想看长篇大论的&#x…...

java WebSocket带参数处理使用

1、webSocket实现代码 Component public class WebSocketStompConfig {//这个bean的注册,用于扫描带有ServerEndpoint的注解成为websocket// ,如果你使用外置的tomcat就不需要该配置文件Beanpublic ServerEndpointExporter serverEndpointExporter() {return new ServerEndpoi…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容&#xff1b;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容&#xff08;CL&#xff09;与匹配电容&#xff08;CL1、CL2&#xff09;的关系 2. 如何选择 CL1 和 CL…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用

前言&#xff1a;我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM&#xff08;Java Virtual Machine&#xff09;让"一次编写&#xff0c;到处运行"成为可能。这个软件层面的虚拟化让我着迷&#xff0c;但直到后来接触VMware和Doc…...

对象回调初步研究

_OBJECT_TYPE结构分析 在介绍什么是对象回调前&#xff0c;首先要熟悉下结构 以我们上篇线程回调介绍过的导出的PsProcessType 结构为例&#xff0c;用_OBJECT_TYPE这个结构来解析它&#xff0c;0x80处就是今天要介绍的回调链表&#xff0c;但是先不着急&#xff0c;先把目光…...