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

LeetCode 滑动窗口 滑动子数组的美丽值

滑动子数组的美丽值

给你一个长度为 n 的整数数组 nums ,请你求出每个长度为 k 的子数组的 美丽值 。
一个子数组的 美丽值 定义为:如果子数组中第 x 小整数 是 负数 ,那么美丽值为第 x 小的数,否则美丽值为 0 。
请你返回一个包含 n - k + 1 个整数的数组,依次 表示数组中从第一个下标开始,每个长度为 k 的子数组的 美丽值 。
子数组指的是数组中一段连续 非空 的元素序列。
示例 1:
输入:nums = [1,-1,-3,-2,3], k = 3, x = 2
输出:[-1,-2,-2]
解释:总共有 3 个 k = 3 的子数组。
第一个子数组是 [1, -1, -3] ,第二小的数是负数 -1 。
第二个子数组是 [-1, -3, -2] ,第二小的数是负数 -2 。
第三个子数组是 [-3, -2, 3] ,第二小的数是负数 -2 。
示例 2:
输入:nums = [-1,-2,-3,-4,-5], k = 2, x = 2
输出:[-1,-2,-3,-4]
解释:总共有 4 个 k = 2 的子数组。
[-1, -2] 中第二小的数是负数 -1 。
[-2, -3] 中第二小的数是负数 -2 。
[-3, -4] 中第二小的数是负数 -3 。
[-4, -5] 中第二小的数是负数 -4 。
示例 3:
输入:nums = [-3,1,2,-3,0,-3], k = 2, x = 1
输出:[-3,0,-3,-3,-3]
解释:总共有 5 个 k = 2 的子数组。
[-3, 1] 中最小的数是负数 -3 。
[1, 2] 中最小的数不是负数,所以美丽值为 0 。
[2, -3] 中最小的数是负数 -3 。
[-3, 0] 中最小的数是负数 -3 。
[0, -3] 中最小的数是负数 -3 。
提示:
n == nums.length
1 <= n <= 105
1 <= k <= n
1 <= x <= k
-50 <= nums[i] <= 50

解题思路

  • 滑动数组 + 暴力枚举

题目是要求计算定长子数组的美丽值,所以采用定长滑动窗口进行枚举

接下来是计算美丽值,也就是找到子数组的第X小的数

由于-50 <= nums[i] <= 50 也就是数组的值范围比较小,所以可以采用一个数组 arr 记录各个数字出现的次数,然后遍历这个数组,找到第X小的数,暴力枚举出美丽值

关于如何找到第X小的数:我们用数组记录各个数字出现的次数时,由于数组的小标大于等于0,所以我们要对数字+50,那么数组的下标-50就是对应的数字。因为第X小的数若是非负数,美丽值则为0,所以只需要计算负数的出现次数,暴力枚举只需要枚举到数组的49下标。在暴力枚举中,我们统计出现的数字的个数 sum,也就是对 arr 的数据进行累加,当 sum 首次大于等于 x 时,此时的下标-50就是第X小的数,也就是美丽值,然后退出循环。若循环正常结束,则美丽值为0。

代码如下↓

/*** Note: The returned array must be malloced, assume caller calls free().*/
int* getSubarrayBeauty(int* nums, int numsSize, int k, int x, int* returnSize){int compare(int* a,int* b){return *a - *b;}int f=-1;int* res = (int*)malloc(sizeof(int)*(numsSize-k+1));int arr[101];memset(arr,0,sizeof(arr));int l=0,r=k-1;*returnSize = numsSize-k+1;for(int i=0;i<k;i++){arr[nums[i]+50]++;}int sum=0;int ff=1;for(int i=0;i<50;i++){sum+=arr[i];if(sum>=x){res[++f] = i-50;ff=0;break;}}if(ff){res[++f] = 0;}while(r<numsSize-1){arr[nums[l]+50]--;l++;r++;arr[nums[r]+50]++;sum=0;ff=1;for(int i=0;i<50;i++){sum+=arr[i];if(sum>=x){res[++f] = i-50;ff=0;break;}}if(ff){res[++f] = 0;}}return res;
}

相关文章:

LeetCode 滑动窗口 滑动子数组的美丽值

滑动子数组的美丽值 给你一个长度为 n 的整数数组 nums &#xff0c;请你求出每个长度为 k 的子数组的 美丽值 。 一个子数组的 美丽值 定义为&#xff1a;如果子数组中第 x 小整数 是 负数 &#xff0c;那么美丽值为第 x 小的数&#xff0c;否则美丽值为 0 。 请你返回一个包含…...

【JavaEE初阶】多线程(4)

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 线程安全的 第四个原因 代码举例: 分析原因 解决方法 方法1 方法2 wait(等待)和notify(通知) wait和sleep区别 线程安全的 第四个原因 内存可见性,引起的线程安全问…...

初识 C++ ( 1 )

引言&#xff1a;大家都说c是c的升级语言。我不懂这句话的含义后来看过解释才懂。 一、面向过程语言和面向对象语言 我们都知道C语言是面向过程语言&#xff0c;而C是面向对象语言&#xff0c;说C和C的区别&#xff0c;也就是在比较面向过程和面向对象的区别。 1.面向过程和面向…...

Python数据分析 Pandas库-初步认识

Python数据分析 Pandas库-初步认识 认识Pandas ​ pandas是一个非常实用的Python工具&#xff0c;我们可以把它想象成一个超级强大的表格处理工具&#xff0c;它比Excel更智能&#xff0c;操作更为简单。pands可以从各种文件格式&#xff08;CSV、JSON、SQL、Excel&#xff0…...

Flutter问题记录 - 适配Xcode 16和iOS 18

文章目录 前言开发环境问题及解决方案1. Upload Symbols Failed2. type UIApplication does not conform to protocol Launcher3. method does not override any method from its superclass 最后 前言 为了新的镜像功能升级了macOS 15和iOS 18&#xff0c;Xcode也不可避免的需…...

VMware ESXi 7.0U3q macOS Unlocker 集成驱动版更新 OEM BIOS 2.7 支持 Windows Server 2025

VMware ESXi 7.0U3q macOS Unlocker 集成驱动版更新 OEM BIOS 2.7 支持 Windows Server 2025 VMware ESXi 7.0U3q macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版) ESXi 7.0U3 标准版集成 Intel 网卡、Realtek USB 网卡 和 NVMe 驱动 请访问原文链…...

大数相乘,大数相加

大数相乘&#xff1a; #include <iostream> #include <vector> #include <string>std::vector<int> multiply(const std::vector<int>& num1, const std::vector<int>& num2) {int n1 num1.size();int n2 num2.size();std::ve…...

Spring Boot配置文件敏感信息加密

一&#xff0c;背景 Spring Boot应用中的数据库、Redis、Nacos、MQ等的用户名、连接地址、密码在配置文件中一般都是明文存储&#xff0c;如果系统被系统攻破或者配置文件所在的目录读权限被破解&#xff0c;又或者是动态配置文件被窃取&#xff0c;内部人员或者黑客很容易通过…...

Java操作数栈分析

Java 的操作数栈&#xff08;Operand Stack&#xff09;是 JVM 的运行时数据区域之一&#xff0c;位于每个线程的栈帧中。操作数栈用于临时存储操作的中间结果和数据&#xff08;操作数&#xff09;&#xff0c;在方法执行时&#xff0c;JVM 的字节码指令会对操作数栈进行操作。…...

C#|.net core 基础 - 值传递 vs 引用传递

不知道你在开发过程中有没有遇到过这样的困惑&#xff1a;这个变量怎么值被改&#xff1f;这个值怎么没变&#xff1f; 今天就来和大家分享可能导致这个问题的根本原因值传递 vs 引用传递。 在此之前我们先回顾两组基本概念&#xff1a; 值类型** vs 引用类型** **值类型&a…...

axure的下载,激活,汉化全过程,多图

1.前言 下载地址&#xff1a;https://pan.baidu.com/s/12xo1mJer2hmBK7QrYM5v-Q?pwd0107#list/path%2Fcsdn%E5%85%B1%E4%BA%AB%E6%96%87%E4%BB%B6 源文章&#xff1a;https://blog.csdn.net/iwanttostudyc/article/details/123773796?ops_request_misc%257B%2522request%25…...

LCR 026

题目&#xff1a;LCR 026 解法一&#xff1a;线性表 将链表中所有元素加入数组中&#xff0c;创建两个指针&#xff0c;分别指向数组的头部和尾部&#xff0c;然后向中间遍历 public void reorderList(ListNode head) {if (head null || head.next null || head.next.next …...

万能小程序运营管理系统 _requestPost 任意文件读取漏洞复现

0x01 产品简介 万能小程序运营管理系统是一种功能全面的系统,旨在帮助开发者和运营人员更好地管理和推广小程序。该系统集成了多种功能模块,覆盖了从小程序开发、部署到运营管理的全链条服务。系统通过提供丰富的功能和工具,帮助用户轻松搭建、管理和优化小程序。该系统支持…...

libyuv之linux编译

文章目录 一、下载源码二、编译源码三、注意事项1、银河麒麟系统&#xff08;aarch64&#xff09;&#xff08;1&#xff09;解决 armv8-adotprodi8mm 指令集支持问题&#xff08;2&#xff09;解决 armv9-asve2 指令集支持问题 一、下载源码 到GitHub网站下载https://github.…...

vue3路由基本使用

在 Vue 3 中&#xff0c;路由指的是应用程序的导航系统&#xff0c;允许你在不同的视图或页面之间进行切换。通过 vue-router 插件&#xff0c;你可以定义路由规则&#xff0c;将 URL 路径映射到 Vue 组件&#xff0c;实现页面间的跳转和状态管理。使用路由&#xff0c;用户可以…...

哪些人适合学习人工智能?

人工智能&#xff08;AI&#xff09;的浪潮正席卷全球&#xff0c;它不仅是科技领域的一场革命&#xff0c;更是社会进步的重要推手。随着AI技术的不断成熟和应用领域的不断拓展&#xff0c;越来越多的人开始关注并渴望掌握这一前沿技术。那么&#xff0c;究竟哪些人适合学习人…...

计算机的错误计算(九十七)

摘要 讨论 的计算精度问题。 由计算机的错误计算&#xff08;九十六&#xff09;知&#xff0c;IEEE754-2019标准中含有 运算。 另外&#xff0c;似乎没有语言直接编程实现内置了该运算。 例1. 已知 x-0.9999999999076 . 计算 不妨用 Python的 math库与 numpy库中的 …...

Flask-Migrate的使用

组织一个 Flask 项目通常需要遵循一定的结构&#xff0c;以便代码清晰、可维护。下面是一个典型的 Flask 项目结构&#xff1a; my_flask_app/ │ ├── app/ │ ├── __init__.py │ ├── models.py │ ├── views.py │ ├── forms.py │ ├── templat…...

python怎么输入整数

使用input()函数输入一个整数&#xff1a; ainput&#xff08;“请输入一个整数\n”&#xff09; 结果却报错TypeError: str object cannot be interpreted as an integer 查阅文档发现input()函数返回值是str型。 我们只需要这样转换&#xff1a; aint(input("请输入一…...

代码随想录打卡Day36

今天做的头皮发麻&#xff0c;除了第一道题是自己AC的&#xff0c;剩下两道题目都是看视频才AC的&#xff0c;主要是看了视频也花了很久时间才想清楚。 1049. 最后一块石头的重量 II 这道题一开始没什么思路&#xff0c;但是看到提示说和昨天的分割子集很像&#xff0c;然后我…...

CentOS 7下‘Development Tools’和‘开发工具’组有区别吗?实测告诉你答案

CentOS 7下‘Development Tools’与‘开发工具’的隐藏关联&#xff1a;技术细节全解析在Linux系统管理中&#xff0c;yum的软件包组功能一直是个既实用又充满谜团的领域。特别是当系统语言环境与软件包元数据语言不一致时&#xff0c;开发者们常常会遇到一个有趣的现象&#x…...

本地柴油发电机组排行2023年最新榜单

柴油发电机是通过燃烧柴油驱动发动机&#xff0c;进而发电的设备&#xff0c;广泛应用于电力中断或无电网地区。1. 柴油发电机的核心工作原理是什么&#xff1f;柴油发电机是一种将化学能转化为电能的设备&#xff0c;其核心是柴油发动机与交流发电机的组合。当柴油在发动机内燃…...

告别C盘战士!ArcGIS 10.6安装路径选择与磁盘空间优化全攻略

告别C盘战士&#xff01;ArcGIS 10.6安装路径选择与磁盘空间优化全攻略当GIS初学者第一次安装ArcGIS 10.6时&#xff0c;往往会被其庞大的安装体积所震惊。许多用户习惯性地点击"下一步"&#xff0c;结果发现C盘空间被迅速吞噬&#xff0c;系统运行变得迟缓。本文将深…...

开启Python GUI开发新纪元:Tkinter Designer可视化界面自动化生成终极指南

开启Python GUI开发新纪元&#xff1a;Tkinter Designer可视化界面自动化生成终极指南 【免费下载链接】Tkinter-Designer An easy and fast way to create a Python GUI &#x1f40d; 项目地址: https://gitcode.com/gh_mirrors/tk/Tkinter-Designer 在Python GUI开发…...

广州因特智能:AI视觉软硬结合,打破半导体检测装备“卡脖子”困境

【导语&#xff1a;广州因特智能科技孵化于西安电子科技大学广州研究院&#xff0c;专注用AI视觉技术解决工业场景的“卡脖子”检测难题&#xff0c;为半导体、光通信、新能源三大领域提供高端检测装备。】校地合作孵化&#xff0c;构建完整能力体系广州因特智能科技由西安电子…...

【与我学 ClaudeCode】协作篇 之 Worktree + Task Isolation :目录隔离的并行执行通道

作者&#xff1a;逆境不可逃 技术永无止境 希望我的内容可以帮助到你&#xff01;&#xff01;&#xff01;&#xff01; 大家吼 ! 我是 逆境不可逃 今天给大家带来文章《【与我学 ClaudeCode】协作篇 之 Worktree Task Isolation &#xff1a;目录隔离的并行执行通道》. Le…...

Unity渲染排序三要素:SortingLayer、Order in Layer与RenderQueue协同原理

1. 为什么刚进Unity的美术和程序总在“图层遮挡”上反复拉扯&#xff1f;“这个UI怎么被背景挡住了&#xff1f;”“粒子特效一开就穿模&#xff0c;明明Z轴没问题&#xff01;”“我调了Order in Layer到999&#xff0c;还是被另一个Sprite挡住——它连Sorting Layer都没改过&…...

【Veo 2提示词SOP白皮书】:从模糊意图到像素级输出的8步标准化工作流(附NASA级测试用例库)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Veo 2提示词工程的本质与范式跃迁 Veo 2并非单纯升级的视频生成模型&#xff0c;而是一次提示词工程范式的根本性重构——它将传统“指令式提示”&#xff08;prompt-as-command&#xff09;转向“意图…...

3步开启Windows 11安卓应用新体验:WSA完整使用指南

3步开启Windows 11安卓应用新体验&#xff1a;WSA完整使用指南 【免费下载链接】WSA Developer-related issues and feature requests for Windows Subsystem for Android 项目地址: https://gitcode.com/gh_mirrors/ws/WSA Windows Subsystem for Android&#xff08;简…...

5分钟掌握AutoClicker:Windows鼠标点击自动化的终极指南

5分钟掌握AutoClicker&#xff1a;Windows鼠标点击自动化的终极指南 【免费下载链接】AutoClicker AutoClicker is a useful simple tool for automating mouse clicks. 项目地址: https://gitcode.com/gh_mirrors/au/AutoClicker AutoClicker是一款专为Windows设计的鼠…...