Rust 力扣 - 2134. 最少交换次数来组合所有的 1 II

文章目录

题目描述

题解思路

我们首先计算数组中长度为0的1的个数k

我们需要遍历长度为k的窗口,找到窗口中0的数量的最小值即为答案

需要注意的是数组是环形的,我们的窗口也应该是环形的

题解代码

rust 复制代码
impl Solution {
    pub fn min_swaps(nums: Vec<i32>) -> i32 {
        let mut k = 0;
        for num in &nums {
            k += num;
        }

        let mut cnt = 0;
        for i in 0..k as usize {
            if nums[i] == 0 {
                cnt += 1;
            }
        }

        let mut ans = cnt;

        for i in 1..nums.len() {
            if nums[i - 1] == 0 {
                cnt -= 1;
            }

            if nums[(i - 1 + k as usize) % nums.len()] == 0 {
                cnt += 1;
            }

            ans = ans.min(cnt);
        }

        ans as i32
    }
}

题目链接

https://leetcode.cn/problems/minimum-swaps-to-group-all-1s-together-ii/

相关推荐
ytadpole23 分钟前
揭秘xxl-job:从高可用到调度一致性
java·后端
Moonbit36 分钟前
MoonBit 三周年 | 用代码写就 AI 时代的语言答卷
后端·程序员·编程语言
菜鸟谢38 分钟前
QEMU
后端
bobz9651 小时前
calico vxlan 默认不依赖 BGP EVPN 携带 VNI
后端
bobz9651 小时前
vxlan 和 vlan 的不同点
后端
每天进步一点_JL1 小时前
JVM 内存调优:到底在调什么?怎么调?
java·jvm·后端
程序员海军1 小时前
如何让AI真正理解你的需求
前端·后端·aigc
yinke小琪1 小时前
说说Java 中 Object 类的常用的几个方法?详细的讲解一下
java·后端·面试
回家路上绕了弯1 小时前
主从架构选型指南:从原理到落地,搞懂怎么选才适合你的业务
后端·架构
沐怡旸2 小时前
【算法】【链表】328.奇偶链表--通俗讲解
算法·面试