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阿明),一起加油、一起学习进步!
LeetCode 1151. 最少交换次数来组合所有的 1(滑动窗口)相关推荐
- LeetCode 2134. 最少交换次数来组合所有的 1 II(数组*2 + 滑动窗口)
文章目录 1. 题目 2. 解题 1. 题目 交换 定义为选中一个数组中的两个 互不相同 的位置并交换二者的值. 环形 数组是一个数组,可以认为 第一个 元素和 最后一个 元素 相邻 . 给你一个 二 ...
- 最少交换次数python_leetcode第200周赛第三题leetcode1536. 排布二进制网格的最少交换次数...
leetcode1536. 排布二进制网格的最少交换次数 给你一个 n x n 的二进制网格 grid,每一次操作中,你可以选择网格的 相邻两行 进行交换. 一个符合要求的网格需要满足主对角线以上的格 ...
- python 数组排序最少交换次数_数组排序 使得交换次数最少
题目: 给定一个包含1-n的数列,我们通过交换任意两个元素给数列重新排序. 求最少需要多少次交换,能把数组排成按1-n递增的顺序,(数组中的元素互不重复). 比如 初始状态 5 4 3 2 1 .交换 ...
- leetcode 424. 替换后的最长重复字符(滑动窗口)
给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次.在执行上述操作后,找到包含重复字母的最长子串的长度. 注意:字符串长度 和 k 不会超过 104 ...
- LeetCode 1536. 排布二进制网格的最少交换次数
文章目录 1. 题目 2. 解题 1. 题目 给你一个 n x n 的二进制网格 grid,每一次操作中,你可以选择网格的 相邻两行 进行交换. 一个符合要求的网格需要满足主对角线以上的格子全部都是 ...
- leetcode1536. 排布二进制网格的最少交换次数(贪心算法)
给你一个 n x n 的二进制网格 grid,每一次操作中,你可以选择网格的 相邻两行 进行交换. 一个符合要求的网格需要满足主对角线以上的格子全部都是 0 . 请你返回使网格满足要求的最少操作次数, ...
- 通过交换相邻数来完成排序所需要的最少交换次数
对一个无序序列进行排序,要求一次只能交换相邻的两个数,那么最少需要交换多少次才可以完成排序呢? 本问题假设序列所有数各不相同. 概念介绍: 1.逆序.一般认为从左向右序列的数字增大认为是正序的,那么从 ...
- 最少交换次数python_史上最简单!冒泡、选择排序的Python实现及算法优化详解
1.排序概念 内部排序和外部排序 根据排序过程中,待排序的数据是否全部被放在内存中,分为两大类: 内部排序:指的是待排序的数据存放在计算机内存中进行的排序过程: 外部排序:指的是排序中要对外存储器进行 ...
- LeetCode 438. Find All Anagrams in a String--字符串-滑动窗口--C++,Python解法
题目地址:Find All Anagrams in a String - LeetCode Given a string s and a non-empty string p, find all th ...
最新文章
- struct 与class 的区别?
- webpack优化相关操作
- 变种GandCrab样本分析
- web前端url传递值 js加密解密
- java树算法_Java数据结构算法(三)树
- 使用协同过滤推荐电影
- centos 限制只能访问某个目录的php文件
- Leetcode--2. 两数相加
- 成都鸿蒙脱模剂厂家,现场体验荣耀智慧屏与鸿蒙OS,荣耀Life成都店与您共享锐科技...
- Linux基础之命令练习Day4-fdisk,mkfs,mlabel,mount,umount,mkswap,swapon,dd,top,free,ps,kill,rpm,yum,make...
- 都说开完电动汽车,就不想再开回燃油车了,是这样吗?
- 1062. 最简分数(20)-PAT乙级真题
- 吴恩达神经网络和深度学习-学习笔记-40-目标定位
- 新媒体时代,内容为王已经走偏
- 基于Springboot健身会员俱乐部管理系统设计
- docker部署环境
- go 学习笔记之万万没想到宠物店竟然催生出面向接口编程?
- 九度1001 A+B for Matrices
- 1exe1.net - 1个exe文件搞定1切
- opencv 寻找轮廓线与轮廓线的交点, 轮廓与圆的交点
热门文章
- Linux中配置ftp服务器
- 互联网金融行业申请评分卡(A卡)简介
- excel导入linux乱码怎么解决方法,,请大家都来看下,Excel导入有乱码?原因出在哪里?应该怎么解决?...
- C++中operator的主要用法
- 非法操作 login.php,阅文游戏中心 h5游戏接入wiki
- 《跟我一起写Makefile》读书笔记(1)
- 动态查找表之二叉搜索树
- django中的admin组件之自定义组件的增删改查的完善
- Makefile文件(四)_书写命令
- asp.net 的页面几种传值方式