[leetcode]2302.统计得分小于k的子数组

1.题目

2.事例

3.数据规模

4.思路(滑动窗口)

4.1滑动窗口的定义

滑动窗口是一种在数组、字符串等序列数据结构上进行操作的算法技巧。以下是其定义及相关要素的详细介绍:

  • 定义:滑动窗口可以理解为在一个序列上,用一个固定大小或者大小可变的 "窗口" 进行滑动,通过不断移动窗口的位置来对序列中的元素进行分组和处理,从而解决一些涉及连续子序列的问题。
  • 窗口大小 :窗口的大小可以是固定的,例如在一个数组中,定义一个大小为k的固定滑动窗口,从数组的起始位置开始,每次向右移动一位,依次考察每一个长度为k的子数组。窗口大小也可以是可变的,根据具体问题的要求和条件,窗口会动态地扩大或缩小,以满足特定的计算需求。
  • 滑动规则:通常情况下,滑动窗口从序列的一端开始,按照一定的步长逐步向另一端滑动。每次滑动时,窗口会舍弃序列中最前面的一个元素(如果窗口大小固定),同时纳入序列中当前位置的下一个元素,以此来更新窗口内的元素集合。
  • 应用场景:常用于解决字符串匹配、数组求和、寻找最长或最短子序列等问题。例如,在字符串中查找包含特定字符集合的最小子串问题,就可以使用滑动窗口算法。通过不断调整窗口的大小和位置,找到满足条件的最小子串。

滑动窗口算法通过巧妙地利用窗口的滑动和元素的增减,避免了对所有可能子序列的暴力枚举,从而降低了算法的时间复杂度,提高了计算效率。

4.2本题思路

这个题目可以用滑动窗口的思想去解决,首先是可以从左到右去进行窗口的扩张,如果窗口里面的值*长度<k就继续向右扩大窗口,如果已经>=k了那么就停止向右扩张,并且将窗口左边界向右进行收缩,直到重新恢复到合法状态,此时把左边界确定,然后右边界重新扩张,循环上述过程即可得到答案!

5.代码

复制代码
class Solution {
public:
    long long countSubarrays(vector<int>& nums, long long k) {
        int l=0,r=0;
        long long sum=0;
        long long ans=0;
        while(r<nums.size())
        {
            sum+=nums[r];
            r++;
            //cout<<"------"<<(r-l)*sum<<endl;
            if((r-l)*sum>=k)
            {
                while(l<r)
                {
                    sum-=nums[l];
                    l++;
                    if((r-l)*sum<k)
                    {
                        ans+=(r-l);
                        break;
                    }
                }

            }
            else 
            {
                ans+=(r-l);
                //cout<<r-l<<endl;
            }
        }
        //ans+=(r-l);
        return ans;
    }
};

感谢大家观看,如果有任何想要交流的都可以评论区讨论!

相关推荐
再睡一夏就好20 分钟前
【排序算法】⑦归并排序
c语言·数据结构·算法·排序算法·学习笔记
项目申报小狂人33 分钟前
2025年中科院2区红杉优化算法Sequoia Optimization Algorithm-附Matlab免费代码
算法·数学建模·matlab
C灿灿数模39 分钟前
备战国赛算法讲解——马尔科夫链,2025国赛数学建模B题详细思路模型更新
算法·数学建模
夏天ccys1 小时前
LeetCode Day5 -- 栈、队列、堆
算法·leetcode···队列
智驱力人工智能9 小时前
工厂智慧设备检测:多模态算法提升工业安全阈值
人工智能·算法·安全·边缘计算·智慧工厂·智能巡航·工厂设备检测
茴香豆的茴110 小时前
转码刷 LeetCode 笔记[2]:203. 移除链表元素(python)
笔记·leetcode·链表
2501_9247314712 小时前
城市路口识别准确率↑31%!陌讯时空建模算法在交通拥堵识别中的突破
人工智能·算法·目标检测·计算机视觉·目标跟踪
熬了夜的程序员12 小时前
【华为机试】208. 实现 Trie (前缀树)
数据结构·算法·华为od·华为
小O的算法实验室14 小时前
2024年ESWA SCI1区TOP,自适应种群分配和变异选择差分进化算法iDE-APAMS,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
不吃洋葱.15 小时前
左子树之和
算法