leetcode1536. 排布二进制网格的最少交换次数(贪心算法)
给你一个 n x n 的二进制网格 grid,每一次操作中,你可以选择网格的 相邻两行 进行交换。
一个符合要求的网格需要满足主对角线以上的格子全部都是 0 。
请你返回使网格满足要求的最少操作次数,如果无法使网格符合要求,请你返回 -1 。
主对角线指的是从 (1, 1) 到 (n, n) 的这些格子。
代码
class Solution {public int minSwaps(int[][] grid) {int n=grid.length,m=grid[0].length;LinkedList<Integer> list=new LinkedList<>();for(int i=0;i<n;i++)//计算右边的连续0{int row=0;for(int j=m-1;j>=0;j--){if(grid[i][j]==1) break;row++;}list.add(row);}int ans=0;for(int i=0;i<n-1;i++)//最后一行任何情况都满足,不需要计算{int ser=n-i-1;int j=0;for(;j<n;j++){if(list.get(j)>=ser){ans+=j-i;list.remove(j);//模拟交换list.addFirst(0);break;}}if(j==n) return -1;//找不到符合的}return ans;}
}
leetcode1536. 排布二进制网格的最少交换次数(贪心算法)相关推荐
- 最少交换次数python_leetcode第200周赛第三题leetcode1536. 排布二进制网格的最少交换次数...
leetcode1536. 排布二进制网格的最少交换次数 给你一个 n x n 的二进制网格 grid,每一次操作中,你可以选择网格的 相邻两行 进行交换. 一个符合要求的网格需要满足主对角线以上的格 ...
- LeetCode 1536. 排布二进制网格的最少交换次数
文章目录 1. 题目 2. 解题 1. 题目 给你一个 n x n 的二进制网格 grid,每一次操作中,你可以选择网格的 相邻两行 进行交换. 一个符合要求的网格需要满足主对角线以上的格子全部都是 ...
- LeetCode 2134. 最少交换次数来组合所有的 1 II(数组*2 + 滑动窗口)
文章目录 1. 题目 2. 解题 1. 题目 交换 定义为选中一个数组中的两个 互不相同 的位置并交换二者的值. 环形 数组是一个数组,可以认为 第一个 元素和 最后一个 元素 相邻 . 给你一个 二 ...
- python 数组排序最少交换次数_数组排序 使得交换次数最少
题目: 给定一个包含1-n的数列,我们通过交换任意两个元素给数列重新排序. 求最少需要多少次交换,能把数组排成按1-n递增的顺序,(数组中的元素互不重复). 比如 初始状态 5 4 3 2 1 .交换 ...
- LeetCode 1151. 最少交换次数来组合所有的 1(滑动窗口)
文章目录 1. 题目 2. 解题 1. 题目 给出一个二进制数组 data,你需要通过交换位置,将数组中 任何位置 上的 1 组合到一起,并返回所有可能中所需 最少的交换次数. 示例 1: 输入:[1 ...
- 通过交换相邻数来完成排序所需要的最少交换次数
对一个无序序列进行排序,要求一次只能交换相邻的两个数,那么最少需要交换多少次才可以完成排序呢? 本问题假设序列所有数各不相同. 概念介绍: 1.逆序.一般认为从左向右序列的数字增大认为是正序的,那么从 ...
- 最少交换次数python_史上最简单!冒泡、选择排序的Python实现及算法优化详解
1.排序概念 内部排序和外部排序 根据排序过程中,待排序的数据是否全部被放在内存中,分为两大类: 内部排序:指的是待排序的数据存放在计算机内存中进行的排序过程: 外部排序:指的是排序中要对外存储器进行 ...
- *【HDU - 2819】Swap(二分图匹配,输出路径)(待证明:是否是最少交换次数?)
题干: Given an N*N matrix with each entry equal to 0 or 1. You can swap any two rows or any two column ...
- 遗传算法求解3D打印中零件二维排布问题(MATLAB实现)
目录 遗传算法求解3D打印中零件二维排布问题(MATLAB实现) 一.遗传算法简介 二.排样方法 1.二维不规则排样 2.编码及解码方式 三.遗传算法求解 1.算法建模 2.遗传算子 选择算子 交叉算 ...
最新文章
- 软件测试工程师的角度看论证学问
- 扎克伯格凌晨放大招,说几句话能造世界的那种
- 世界最成功的僵尸网络使用Fast Flux技术躲避检测
- scikit_image
- linux查看内存cpu占用
- java servlet 返回图片_SpringMVC返回图片的几种方式
- NE5532前级音调板 带高中低音调节和音量调节
- 程序员面试金典 - 面试题 02.01. 移除重复节点(哈希set)
- SQLLoader1(简单测试,以控制文件方式导入数据)
- Oracle 10g新特性
- TDirectory.GetDirectoryRoot获取指定目录的根目录
- 阶段5 3.微服务项目【学成在线】_day04 页面静态化_06-freemarker基础-遍历map数据...
- ASP.NET WEB API简介
- 天津博物馆镇馆之宝——西周太保鼎
- iOS开发基础之第三方调起自己的App
- vue动态加载SVG文件并修改节点数据
- 小米与360的智能硬件用户之争
- ABAQUS 2020 license冲突解决
- Github每日精选(第56期):支持多语言的文字识别EasyOCR
- Lua基础:table的几种构造方式