0
点赞
收藏
分享

微信扫一扫

解决dataV库中滚动列表抖动的bug

桑二小姐 2024-06-05 阅读 8

力扣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;
          }
      };
    
举报

相关推荐

0 条评论