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/

相关推荐
ππ记录1 分钟前
java面试题带答案2025最新整理
java·开发语言
PHASELESS4113 分钟前
Java栈与队列深度解析:结构、实现与应用指南
java·开发语言·算法
uhakadotcom19 分钟前
Python中orjson、json、json5三大JSON库简单对比与实用教程
后端·面试·github
Nigori7_25 分钟前
day33-动态规划__62.不同路径__63. 不同路径 II __343. 整数拆分__343. 整数拆分
算法·动态规划
SeasonedDriverDG25 分钟前
C语言编写的线程池
linux·c语言·开发语言·算法
2401_8729450932 分钟前
【补题】Codeforces Round 857 (Div. 1) A. The Very Beautiful Blanket
算法
LAOLONG-C36 分钟前
C语言 栈 的 描述 和 详解
c语言·数据结构·算法
辛姜_千尘红回38 分钟前
AT_abc398_e [ABC398E] Tree Game 题解
c语言·c++·笔记·算法
啊阿狸不会拉杆41 分钟前
数据结构-限定性线性表 - 栈与队列
java·c语言·数据结构·c++·python·算法
南雨北斗1 小时前
Docker部署的优缺点
后端