leetcode 5977. 最少交换次数来组合所有的 1 II
1 class Solution { 2 public: 3 int minSwaps(vector<int>& nums) { 4 int n=nums.size(),sum1=0; 5 for(auto &p:nums)if(p)sum1++; 6 for(int i=0;i)nums.push_back(nums[i]); 7 int l=0,r=0,mx=0,cnt1=0; 8 while(l<n) 9 { 10 if(r 1)cnt1++; 11 while(r-l+1>sum1) 12 { 13 if(nums[l]==1)cnt1--; 14 l++; 15 } 16 if(r-l+1==sum1) mx=max(cnt1,mx); 17 r++; 18 } 19 return sum1-mx; 20 } 21 };