classSolution{public:intminSubarray(vector<int>&nums,intp){intmod=accumulate(nums.begin(),nums.end(),0LL)%p;if(!mod)return0;intn=nums.size();intres=n;unordered_map<int,int>prefixMap;prefixMap[0]=-1;intcurrent=0;for(inti=0;i<n;i++){current=(current+nums[i])%p;// int find = current >= mod ? (current - mod) : (current + p - mod);inttoFind=(current+p-mod)%p;if(prefixMap.find(toFind)!=prefixMap.end()){res=min(res,i-prefixMap[toFind]);}prefixMap[current]=i;}returnres==n?-1:res;}};