当前位置: 首页 > article >正文

Rust 力扣 - 2134. 最少交换次数来组合所有的 1 II

文章目录

  • 题目描述
  • 题解思路
  • 题解代码
  • 题目链接

题目描述

在这里插入图片描述

题解思路

我们首先计算数组中长度为0的1的个数k

我们需要遍历长度为k的窗口,找到窗口中0的数量的最小值即为答案

需要注意的是数组是环形的,我们的窗口也应该是环形的

题解代码

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/


http://www.kler.cn/a/376610.html

相关文章:

  • Vue 学习随笔系列十三 -- ElementUI 表格合并单元格
  • Spring JPA 集成 YashanDB:让数据管理变得轻松愉快
  • 【周末推荐】Windows无缝连接iPhone
  • IoTDB时序数据库使用
  • ubuntu运行gazebo导致内存越来越少
  • 如何实现LRU缓存淘汰算法?
  • 游戏光照的专业知识解析
  • 网络学习/复习3序列化与反序列化/HTTP/HTTPS
  • 了解SQLExpress数据库
  • 文件系统(IO-进程-线程)
  • shodan-4
  • Milvus - GPU 索引类型及其应用场景
  • Soft TeacherEnd-to-End Semi-Supervised Object Detection with Soft Teacher
  • wireshark抓包查看langchain的ChatOpenAI接口发送和接收的数据
  • P3-2.【结构化程序设计】第二节——知识要点:多分支选择语句
  • 详解ARM64可执行程序的生成过程
  • 猫头虎分享Python 编码转换库:处理 JSONL 编码格式转换的最佳实践
  • 如何压缩pdf文件的大小?5分钟压缩pdf的方法推荐
  • kubeadm安装k8s
  • 计算机网络-总线型以太网(ethernet)-知识点小结
  • 基于STM32的智能宠物喂食系统设计
  • Discuz中的关键全局变量`$_G`
  • 快速上手 Windows 命令:简化你的工作流程
  • xlrd.biffh.XLRDError: Excel xlsx file; not supported
  • 你真的了解Canvas吗--解密十三【ZRender篇】
  • 简单了解前缀树/字典树(Trie树)C++代码