classSolution{public:intkEmptySlots(vector<int>&bulbs,intk){constintn=bulbs.size();intans=INT_MAX;// day[i] := the day when bulbs[i] is turned onvector<int>day(n);for(inti=0;i<n;++i)day[bulbs[i]-1]=i+1;// Find a subarray of day[l..r], where its length is k + 2// For all that l < i < r, day[i] > max(day[l], day[r])intl=0;intr=l+k+1;for(inti=1;r<n;++i)if(i==r){ans=min(ans,max(day[l],day[r]));l=i;r=i+k+1;}elseif(day[i]<max(day[l],day[r])){l=i;r=i+k+1;}returnans==INT_MAX?-1:ans;}};
classSolution{publicintkEmptySlots(int[]bulbs,intk){finalintn=bulbs.length;intans=Integer.MAX_VALUE;// day[i] := the day when bulbs[i] is turned onint[]day=newint[n];for(inti=0;i<n;++i)day[bulbs[i]-1]=i+1;// Find a subarray of day[l..r], where its length is k + 2// For all that l < i < r, day[i] > max(day[l], day[r])intl=0;intr=l+k+1;for(inti=1;r<n;++i)if(i==r){ans=Math.min(ans,Math.max(day[l],day[r]));l=i;r=i+k+1;}elseif(day[i]<Math.max(day[l],day[r])){l=i;r=i+k+1;}returnans==Integer.MAX_VALUE?-1:ans;}}
classSolution:defkEmptySlots(self,bulbs:List[int],k:int)->int:n=len(bulbs)ans=math.inf# day[i] := the day when bulbs[i] is turned onday=[0]*nfori,bulbinenumerate(bulbs):day[bulb-1]=i+1# Find a subarray of day[l..r], where its length is k + 2# For all that l < i < r, day[i] > max(day[l], day[r])l=0r=l+k+1i=1whiler<n:ifi==r:ans=min(ans,max(day[l],day[r]))l=ir=i+k+1elifday[i]<max(day[l],day[r]):l=ir=i+k+1i+=1return-1ifans==math.infelseans