力扣2134.最少交换次数得到连续的1(断环成链)

  • 最终一定是所有1的个数(长度) 的区间

    • 所以求所有1的和 用和作为k作滑动窗口
    • 将环断成长度为n+sum-1的链
  •   class Solution {
      public:
          int minSwaps(vector<int>& nums) {
              int sum = accumulate(nums.begin(),nums.end(),0);
              int cnt=0,n = nums.size();;
              cnt = accumulate(nums.begin(),nums.begin()+sum,0);
              int maxd = cnt;
              for(int i=sum;i<n+sum-1;i++)
              {
                  cnt += nums[i%n] - nums[(i - sum) % n];
                  maxd = max(maxd,cnt);
              }
              return sum - maxd;
          }
      };
    
本站无任何商业行为
个人在线分享 » 力扣2134.最少交换次数得到连续的1(断环成链)
E-->