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/

相关推荐
再睡一夏就好5 分钟前
【C++闯关笔记】unordered_map与unordered_set的底层:哈希表(哈希桶)
开发语言·c++·笔记·学习·哈希算法·散列表
yzx99101310 分钟前
基于Django的智慧园区管理系统开发全解析
后端·python·django
potato_155410 分钟前
现代C++核心特性——内存篇
开发语言·c++·学习
lly20240612 分钟前
C# 继承
开发语言
August_._13 分钟前
【JAVA】基础(一)
java·开发语言·后端·青少年编程
倚栏听风雨23 分钟前
火焰图怎么看
后端
Moonbit27 分钟前
MoonBit Pearls Vol.12:初探 MoonBit 中的 Javascript 交互
javascript·后端·面试
摆烂工程师37 分钟前
(2025年11月)开发了 ChatGPT 导出聊天记录的插件,ChatGPT Free、Plus、Business、Team 等用户都可用
前端·后端·程序员
软件开发技术深度爱好者37 分钟前
Python类中方法种类介绍
开发语言·python
麦麦鸡腿堡37 分钟前
Java_LinkedList底层结构
java·开发语言