Rust 力扣 - 2653. 滑动子数组的美丽值

文章目录

题目描述

题解思路

我们遍历长度为k的的窗口

因为数据范围比较小,所以我们可以通过计数排序找到窗口中第k小的数

  • 如果小于0,则该窗口的美丽值为第k小的数
  • 如果大于等于0,则该窗口的美丽值为0

题解代码

rust 复制代码
impl Solution {
    pub fn get_subarray_beauty(nums: Vec<i32>, k: i32, x: i32) -> Vec<i32> {
        let mut cnt = [0; 101];

        let get_beauty = |cnt: &mut [i32]| -> i32 {
            let mut count = 0;
            for i in 0..101 {
                count += cnt[i];

                if count >= x {
                    if i < 50 {
                        return i as i32 - 50;
                    }

                    return 0
                }
            }

            0
        };

        for i in 0..k as usize {
            cnt[(nums[i] + 50) as usize] += 1;
        }

        let mut ans = vec![0; nums.len() - k as usize + 1];

        ans[0] = get_beauty(&mut cnt);

        for i in k as usize..nums.len() {
            cnt[(nums[i - k as usize] + 50) as usize] -= 1;
            cnt[(nums[i] + 50) as usize] += 1;

            ans[i - k as usize + 1] = get_beauty(&mut cnt);
        }

        ans
    }
}

题目链接

https://leetcode.cn/problems/sliding-subarray-beauty/

相关推荐
学习OK呀1 分钟前
日常docker的实操命令场景
后端
雾原4 分钟前
Nginx高频用途的详细配置和性能调优
后端
类似不类似4 分钟前
快速配置linux远程开发-go语言
开发语言·后端·golang
前端付豪5 分钟前
1、为什么浏览器要有渲染流程? ——带你一口气吃透 Critical Rendering Path
前端·后端·浏览器
永进,5 分钟前
C++中的智能指针
开发语言·c++
元亓亓亓6 分钟前
LeetCode热题100--560.和为K的子数组(前缀和)--中等
算法·leetcode·职场和发展
前端付豪7 分钟前
3、Node.js异步编程彻底吃透
前端·后端·node.js
老胖闲聊9 分钟前
Flask 请求数据获取方法详解
后端·python·flask
舒一笑12 分钟前
一文简单记录打通K8s+Kibana流程如何启动(Windows下的Docker版本)
后端·elasticsearch·kibana
亦黑迷失13 分钟前
轻量级 Express 服务器:用 Pug 模板引擎实现动态参数传递
前端·javascript·后端