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/

相关推荐
C++ 老炮儿的技术栈6 小时前
基于Qt实现轻量化本地音乐播放器
开发语言·c++·qt·c·播放器·音乐
qq_448011166 小时前
C语言中的柔性数组
c语言·开发语言·柔性数组
小白学大数据6 小时前
长周期爬虫的数据一致性:断点续爬 + 事务回滚保障采集质量
开发语言·爬虫·测试工具
leisoo80977 小时前
财报数据怎么排雷本地化Python构建财务异常预警系统
人工智能·python·算法
zlinear数据采集卡7 小时前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
Poo_Chai7 小时前
QT emit信号后完整处理流程,包括槽函数响应流程
java·开发语言·数据库
Thneonl7 小时前
一个人从 Rust 内核做到 React 前端:我做了一个云原生 SRE 巡检图谱桌面工具
rust
IT爱学堂7 小时前
精讲软件设计师(软考中级)一站式通关课_实战课程_慕课网
后端
瑞码空间7 小时前
Java 图形界面(GUI)完整知识点手册
java·开发语言·图形界面·swing
战天战地站房顶7 小时前
在 Windows Docker 中部署 PostgreSQL 17 + pgvector 完整指南
后端