前言
记录几个面试常见题型
一、知识点
固定滑动窗口
可变窗口
二、题目
固定
1、1343
给你一个整数数组 arr 和两个整数 k 和 threshold 。
请你返回长度为 k 且平均值大于等于 threshold 的子数组数目。
1.1 分析
滑动窗口
1.2代码
cpp
class Solution {
public:
int numOfSubarrays(vector<int>& arr, int k, int threshold) {
int t = k* threshold;
int n = arr.size();
int ans =0;
int sum =0;
for(int i =0;i<k;i++){
sum+=arr[i];
}
ans+=sum>=t?1:0;
if(n==k){
return ans;}
for(int i =k;i<n;i++){
sum+=arr[i];
sum-=arr[i-k];
ans+=sum>=t?1:0;
}
return ans;
}
};
go
func numOfSubArrays(arr []int, k int, threshold int) int {
right, left, sum, ans := 0, 0, 0, 0
//expand windows
for right < len(arr) {
sum += arr[right]
//shrink windows
for right-left+1 >= k {
// 长度为k
if right-left+1 == k {
avg := float64(sum) / float64(k