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/

相关推荐
罗政19 分钟前
PDF书籍《手写调用链监控APM系统-Java版》第12章 结束
java·开发语言·pdf
匹马夕阳19 分钟前
详细对比JS中XMLHttpRequest和fetch的使用
开发语言·javascript·ecmascript
月巴月巴白勺合鸟月半20 分钟前
一个特别的串口通讯
开发语言·串口通讯
GraduationDesign23 分钟前
基于SpringBoot的蜗牛兼职网的设计与实现
java·spring boot·后端
乄北城以北乀26 分钟前
第1章 R语言中的并行处理入门
开发语言·分布式·r语言
颜淡慕潇34 分钟前
【K8S问题系列 | 20 】K8S如何删除异常对象(Pod、Namespace、PV、PVC)
后端·云原生·容器·kubernetes
全栈老实人_35 分钟前
农家乐系统|Java|SSM|VUE| 前后端分离
java·开发语言·tomcat·maven
customer0838 分钟前
【开源免费】基于SpringBoot+Vue.JS安康旅游网站(JAVA毕业设计)
java·vue.js·spring boot·后端·kafka·开源·旅游
Tester_孙大壮1 小时前
Python爬虫技术科普
开发语言·爬虫·python
帅逼码农1 小时前
有限域、伽罗瓦域、扩域、素域、代数扩张、分裂域概念解释
算法·有限域·伽罗瓦域