尴尬,第一次知道原来set是有序的,,,丢人丢人。。。
看来最近在恶补STL是很正确的选择。。。。。
class Solution{
public:
int shortestSubarray(vector<int> &A , int K){
map<long long , int> ma;
set<long long> se;
se.insert(0);
ma[0]=0;
int ans=INT_MAX;
long long tot=0;
for(int i=0;i<A.size();i++){
tot+=A[i];
ma[tot]=i+1;
auto au = se.lower_bound(tot - K);
if(au != se.end() && *au == tot-K){
ans = min(ans , i-ma[*au]+1);
}
else if(au != se.begin()){
au--;
ans=min(ans , i - ma[*au] + 1);
}
se.insert(tot);
au = se.lower_bound(tot);
se.erase(au , se.end());
se.insert(tot);
}
return ans == INT_MAX? -1:ans;
}
};