題目:
給你一個(gè)整數(shù)數(shù)組 arr 和兩個(gè)整數(shù) k 和 threshold 。
請(qǐng)你返回長(zhǎng)度為 k 且平均值大于等于 threshold 的子數(shù)組數(shù)目育瓜。
示例:
輸入:arr = [2,2,2,2,5,5,5,8], k = 3, threshold = 4
輸出:3
解釋:子數(shù)組 [2,5,5],[5,5,5] 和 [5,5,8] 的平均值分別為 4,5 和 6 躏仇。其他長(zhǎng)度為 3 的子數(shù)組的平均值都小于 4 (threshold 的值)。
解題方法:
滑窗法:
- 計(jì)算第一個(gè)長(zhǎng)度為k子數(shù)組元素總和sum焰手,判斷是否滿足大于k*threshold;
- 滑窗更新子數(shù)組:sum+=arr[i]-arr[i-k]蚓挤,判斷新的sum是否滿足大于k*threshold。
代碼和結(jié)果:
class Solution {
public:
int numOfSubarrays(vector<int>& arr, int k, int threshold) {
int th=threshold*k;
int cnt=0;
int smv=0;
int len=arr.size();
int i;
for(i=0;i<k;i++)
smv+=arr[i];
if(smv>=th)
cnt++;
for(i=k;i<len;i++)
{
smv+=arr[i]-arr[i-k];
if(smv>=th)
cnt++;
}
return cnt;
}
};
運(yùn)行結(jié)果:簡(jiǎn)單題已經(jīng)做的七七八八了灿意,這是我進(jìn)軍中等題的第一道題崇呵,感覺(jué)難度也還可以缤剧,要繼續(xù)堅(jiān)持下去,加油域慷!