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/

相关推荐
格砸17 分钟前
从入门到辞职|从ChatGPT到OpenClaw,跟上智能时代的进化
前端·人工智能·后端
蝎子莱莱爱打怪1 小时前
GitLab CI/CD + Docker Registry + K8s 部署完整实战指南
后端·docker·kubernetes
哈密瓜的眉毛美1 小时前
零基础学Java|第三篇:DOS 命令、转义字符、注释与代码规范
后端
HXhlx2 小时前
CART决策树基本原理
算法·机器学习
用户60572374873082 小时前
AI 编码助手的规范驱动开发 - OpenSpec 初探
前端·后端·程序员
哈密瓜的眉毛美2 小时前
零基础学Java|第二篇:Java 核心机制与第一个程序:从 JVM 到 Hello World
后端
用户8307196840822 小时前
RabbitMQ vs RocketMQ 事务大对决:一个在“裸奔”,一个在“开挂”?
后端·rabbitmq·rocketmq
初次攀爬者2 小时前
RocketMQ 集群介绍
后端·消息队列·rocketmq
Wect2 小时前
LeetCode 210. 课程表 II 题解:Kahn算法+DFS 双解法精讲
前端·算法·typescript
Leo8992 小时前
go 从零单排 之 一小时通关
后端