如代码,虽然出现循环套循环,但内层循环次数不固定,无法精准判断,请问这到底时间复杂度为多少呢?实在想不通。
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,ans;
int a;
int k[100005];
signed main(){
cin>>n>>m;
int l=1,r=1;
for(int i=1;i<=n;i++){
r=i;
cin>>a;
k[i]=k[i-1]+a;
while(k[r]-k[l-1]>m&&l<=r)l++;
if(k[i]-k[l-1]==m){
ans++;
}
}
cout<<ans;
return 0;
}