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/

相关推荐
wkj0014 分钟前
php操作redis
开发语言·redis·php
极客代码9 分钟前
【Python TensorFlow】进阶指南(续篇三)
开发语言·人工智能·python·深度学习·tensorflow
土豆湿14 分钟前
拥抱极简主义前端开发:NoCss.js 引领无 CSS 编程潮流
开发语言·javascript·css
界面开发小八哥21 分钟前
更高效的Java 23开发,IntelliJ IDEA助力全面升级
java·开发语言·ide·intellij-idea·开发工具
草莓base35 分钟前
【手写一个spring】spring源码的简单实现--容器启动
java·后端·spring
jiao_mrswang42 分钟前
leetcode-18-四数之和
算法·leetcode·职场和发展
Ljw...1 小时前
表的增删改查(MySQL)
数据库·后端·mysql·表的增删查改
qystca1 小时前
洛谷 B3637 最长上升子序列 C语言 记忆化搜索->‘正序‘dp
c语言·开发语言·算法
编程重生之路1 小时前
Springboot启动异常 错误: 找不到或无法加载主类 xxx.Application异常
java·spring boot·后端
薯条不要番茄酱1 小时前
数据结构-8.Java. 七大排序算法(中篇)
java·开发语言·数据结构·后端·算法·排序算法·intellij-idea