LeetCode 1151. 最少交换次数来组合所有的 1(滑动窗口)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给出一个二进制数组 data,你需要通过交换位置,将数组中 任何位置 上的 1 组合到一起,并返回所有可能中所需 最少的交换次数。

示例 1:
输入:[1,0,1,0,1]
输出:1
解释: 
有三种可能的方法可以把所有的 1 组合在一起:
[1,1,1,0,0],交换 1 次;
[0,1,1,1,0],交换 2 次;
[0,0,1,1,1],交换 1 次。
所以最少的交换次数为 1。示例 2:
输入:[0,0,0,1,0]
输出:0
解释: 
由于数组中只有一个 1,所以不需要交换。示例 3:
输入:[1,0,1,0,1,0,0,1,1,0,1]
输出:3
解释:
交换 3 次,一种可行的只用 3 次交换的解决方案是 [0,0,0,0,0,1,1,1,1,1,1]。提示:
1 <= data.length <= 10^5
0 <= data[i] <= 1

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-swaps-to-group-all-1s-together
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 先计算出有多少个1,假设为k个
  • 然后用一个固定大小为k的窗口,遍历数组,记录窗口内0的最小个数即为答案
class Solution {
public:int minSwaps(vector<int>& data) {int one = 0, i, j, minsp = INT_MAX;for(i = 0; i < data.size(); ++i){if(data[i])one++;}i = 0; j = 0;int count = 0;while(j < one-1){if(data[j++])count++;}for( ; j < data.size(); ++j){if(data[j])count++;minsp = min(minsp, one-count);if(data[i++])count--;}return minsp;}
};

208 ms 64.5 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475067.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android闹钟测试工具,android开发:AlarmManager闹钟管理器的实例

1、AlarmManager&#xff0c;顾名思义&#xff0c;就是“提醒”&#xff0c;是Android中常用的一种系统级别的提示服务&#xff0c;在特定的时刻为我们广播一个指定的PendingIntent。通俗点&#xff0c;就是设置一个时间&#xff0c;在指定的时间里&#xff0c;Alarm会帮我们执…

discuz程序的阅读(1)

今天开始阅读discuz2.5的源码&#xff0c;这是发现的一些收获&#xff0c;记录一下。有兴趣的同学可以去试试 CREATE TABLE pre_forum_post ( pid int(10) unsigned NOT NULL COMMENT 帖子id, fid mediumint(8) unsigned NOT NULL default 0 COMMENT 论坛id, tid mediumint(8) …

LeetCode 742. 二叉树最近的叶节点(建立父节点信息+BFS)

文章目录1. 题目2. 解题1. 题目 给定一个 每个结点的值互不相同 的二叉树&#xff0c;和一个目标值 k&#xff0c;找出树中与目标值 k 最近的叶结点。 这里&#xff0c;与叶结点 最近 表示在二叉树中到达该叶节点需要行进的边数与到达其它叶结点相比最少。 而且&#xff0c;当…

SharePoint 大局观(4)——从开发人员角度

内容摘要 SharePoint是微软提供的一个企业级别的协作平台&#xff0c;目前最新的版本是2010&#xff0c;它的功能相当多&#xff0c;而且也相当灵活。为了帮助大家更好地&#xff0c;从相对较高的层面了解SharePoint 2010的体系结构&#xff0c;我这里分七讲来分别介绍。 本节讲…

LeetCode 490. 迷宫(BFS/DFS)

文章目录1. 题目2. 解题2.1 BFS2.2 DFS1. 题目 由空地和墙组成的迷宫中有一个球。 球可以向上下左右四个方向滚动&#xff0c;但在遇到墙壁前不会停止滚动。 当球停下时&#xff0c;可以选择下一个方向。 给定球的起始位置&#xff0c;目的地和迷宫&#xff0c;判断球能否在目…

android studio moudel,Android Studio 添加其他目录下的module

Android Studio 添加其他目录下的moduleadmin • 2020 年 11 月 07 日[title]需要操作的原因[/title]在我们写程序的时候&#xff0c;经常会因为重复性的代码而耽误工夫&#xff0c;所以会编写一些常用的工具类和模块进行调用。在网上搜索到的都是同一个工程下如何配置模块&…

Photoshop Blendmodi in GLSL

转载自&#xff1a;http://renderingpipeline.com/2012/06/photoshop-blendmodi-glsl/ I once wrote a texturing tool in which you could paint on a 3D model on multiple layers. These layers were composing the final texture just as you know it from photoshop, comp…

LeetCode 505. 迷宫 II(BFS / Dijkstra 最短路径)

文章目录1. 题目2. 解题2.1 BFS2.2 Dijkstra 最短路径1. 题目 由空地和墙组成的迷宫中有一个球。 球可以向上下左右四个方向滚动&#xff0c;但在遇到墙壁前不会停止滚动。 当球停下时&#xff0c;可以选择下一个方向。 给定球的起始位置&#xff0c;目的地和迷宫&#xff0c…

数据冗余的理解和相关概念

2012年6月22日有同学去完爱森哲面试回来说&#xff0c;有一问题是问如何消除数据冗余的&#xff0c;我一时也忘了数据冗余的相关概念&#xff0c;于是再复习了一遍&#xff1a; 数据冗余 关系数据库的数据冗余形成的原因&#xff1a;表的重复、属性的重复、元组的重复、属性值的…

红米note3android版本,小米-红米note3-LOS-安卓9.0.0-稳定版Stable3.0-来去电归属-农历等-本地化增强适配...

制作者&#xff1a;MOS-Developer基于版本&#xff1a;LineageOS Android最新安卓9.0.0代码适合机型&#xff1a;小米红米note3高配/标配/低配/kenzo注意事项&#xff1a;为了能一直更新和维护&#xff0c;不付费不收费&#xff0c;请把预装的4个软件使用3-5天后再卸载&#xf…

LeetCode 305. 岛屿数量 II(并查集)

文章目录1. 题目2. 解题2.1 超时解2.1 改进计算方法1. 题目 假设你设计一个游戏&#xff0c;用一个 m 行 n 列的 2D 网格来存储你的游戏地图。 起始的时候&#xff0c;每个格子的地形都被默认标记为「水」。 我们可以通过使用 addLand 进行操作&#xff0c;将位置 (row, col)…

cygwin下的gcc-4.7.1编译心得

步骤&#xff1a; 1、先编译gmp mpfr mpc这几个库&#xff0c;注意configure时--prefix/usr/local/ 2、中间碰到过can not compute suffix的错误&#xff0c;在命令 export LD_LIBRARY_PATH/usr/local/:${LD_LIBRARY_PATH} export LD_RUN_PATH/usr/local/:${LD_RUN_PATH} 也不行…

鸿蒙系统怎么换windows,求助~鸿蒙系统windows环境搭建(hpm-cli安装失败)!

系统win10&#xff0c;执行命令“npm install -g ohos/hpm-cli”&#xff0c;报错如下&#xff1a;npm ERR! code EEXISTnpm ERR! path C:\Users\jay\AppData\Roaming\npm\node_modules\ohos\hpm-cli\bin\hpmnpm ERR! dest C:\Users\jay\AppData\Roaming\npm\hpmnpm ERR! EEXIS…

LeetCode 265. 粉刷房子 II(DP)

文章目录1. 题目2. 解题1. 题目 假如有一排房子&#xff0c;共 n 个&#xff0c;每个房子可以被粉刷成 k 种颜色中的一种&#xff0c;你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同。 当然&#xff0c;因为市场上不同颜色油漆的价格不同&#xff0c;所以房子粉刷成…

string::size_type

重读c primier, 从这个文章开始做个记录&#xff0c;方便以后自己查阅。 1、string::size_type,string的size&#xff08;&#xff09;方法返回的类型&#xff0c;可以保证string的任意长度。作为配套类型使得string类型的操作与机器无关。 2、操作时需加上作用于操作符&#x…

鸿蒙系统笔记本价格,鸿蒙系统手机华为P50将明年3月发售,华为P40价格骤降至冰点...

原标题&#xff1a;鸿蒙系统手机华为P50将明年3月发售&#xff0c;华为P40价格骤降至冰点鸿蒙系统手机华为P50将明年3月发售&#xff0c;华为P40价格骤降至冰点&#xff01;每一代P系列产品都基于华为研发和业界合作伙伴的最前沿的能力&#xff0c;实现全新的突破&#xff0c;明…

LeetCode 272. 最接近的二叉搜索树值 II(栈+优先队列)

文章目录1. 题目2. 解题1. 题目 给定一个不为空的二叉搜索树和一个目标值 target&#xff0c;请在该二叉搜索树中找到最接近目标值 target 的 k 个值。 注意&#xff1a; 给定的目标值 target 是一个浮点数 你可以默认 k 值永远是有效的&#xff0c;即 k ≤ 总结点数 题目保证…

android p dp5,谷歌释出Android P第5个开发者预览版更新!

原标题&#xff1a;谷歌释出Android P第5个开发者预览版更新&#xff01;【PConline资讯】今天凌晨&#xff0c;谷歌正式推出了AndroidP的第五个开发者预览版(DP5)&#xff0c;这标志着AndroidP终于准备好在2018年第三季度来面对广大的Android用户了。具体来说&#xff0c;按照…

Sax解析Xml

程序1. package WildCat.Xml.Sax; import java.io.File; import java.util.Stack; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHa…

LeetCode 750. 角矩形的数量(DP)

文章目录1. 题目2. 解题1. 题目 给定一个只包含 0 和 1 的网格&#xff0c;找出其中角矩形的数量。 一个「角矩形」是由四个不同的在网格上的 1 形成的轴对称的矩形。 注意只有4角的位置才需要为 1。并且&#xff0c;4 个 1 需要是不同的。 示例 1&#xff1a; 输入&#xf…