leetcode 947. 移除最多的同行或同列石头(dfs)
n 块石头放置在二维平面中的一些整数坐标点上。每个坐标点上最多只能有一块石头。
如果一块石头的 同行或者同列 上有其他石头存在,那么就可以移除这块石头。
给你一个长度为 n 的数组 stones ,其中 stones[i] = [xi, yi] 表示第 i 块石头的位置,返回 可以移除的石子 的最大数量。
示例 1:
输入:stones = [[0,0],[0,1],[1,0],[1,2],[2,1],[2,2]]
输出:5
解释:一种移除 5 块石头的方法如下所示:
- 移除石头 [2,2] ,因为它和 [2,1] 同行。
- 移除石头 [2,1] ,因为它和 [0,1] 同列。
- 移除石头 [1,2] ,因为它和 [1,0] 同行。
- 移除石头 [1,0] ,因为它和 [0,0] 同列。
- 移除石头 [0,1] ,因为它和 [0,0] 同行。
石头 [0,0] 不能移除,因为它没有与另一块石头同行/列。
代码
class Solution {public int removeStones(int[][] stones) {int n=stones.length;List<List<Integer>> edge=new ArrayList<>();for(int i=0;i<n;i++){edge.add(new ArrayList<>());for(int j=0;j<n;j++){if(stones[i][0]==stones[j][0]||stones[i][1]==stones[j][1])
//有冲突的两个节点连成一条边edge.get(i).add(j);}}boolean[] check=new boolean[n];int res=0;for(int i=0;i<n;i++){if(!check[i]){res++;reStones(edge,check,i);}}return n-res;}public void reStones(List<List<Integer>> edge,boolean[] check,int cur) {//dfs将所有联通节点标记check[cur]=true;for(int c:edge.get(cur)){if (check[c]) continue;reStones(edge, check, c);}}
}
leetcode 947. 移除最多的同行或同列石头(dfs)相关推荐
- LeetCode 947. 移除最多的同行或同列石头(并查集)
1. 题目 我们将石头放置在二维平面中的一些整数坐标点上.每个坐标点上最多只能有一块石头. 每次 move 操作都会移除一块所在行或者列上有其他石头存在的石头. 请你设计一个算法,计算最多能执行多少次 ...
- 947. 移除最多的同行或同列石头2021-01-23
链接:947. 移除最多的同行或同列石头 题解:https://leetcode-cn.com/problems/most-stones-removed-with-same-row-or-column ...
- 移除最多的同行或同列石头
题目描述 Title 石子游戏 Question description 1.现有一 N ⋆ N N \star N N⋆N 的棋盘, 每个格子可能有或者没有石子, 用 1 / 0 1 / 0 1/0 ...
- leetcode最小面积_每日一道 LeetCode (51):盛最多水的容器
❝ 每天 3 分钟,走上算法的逆袭之路. ❞ 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub:https://github.com/meteor1993/LeetCode Gi ...
- lrange是取出所有值并移除么_图解双指针 | LeetCode 27. 移除元素
题目描述 原题链接:LeetCode 27. 移除元素 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在 ...
- 每日一道 LeetCode (51):盛最多水的容器
每天 3 分钟,走上算法的逆袭之路. 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub: https://github.com/meteor1993/LeetCode Gitee ...
- Java黑皮书课后题第7章:***7.36(游戏:八皇后问题)经典的八皇后难题是要将八个皇后放在棋盘上,任何两个皇后都不能相互攻击(没有两个皇后在同行、同列、同一对角线)。编写程序显示一个解决方案
7.36(游戏:八皇后问题)经典的八皇后难题是要将八个皇后放在棋盘上,任何两个皇后都不能相互攻击(没有两个皇后在同行.同列.同一对角线).编写程序显示一个解决方案 题目 题目描述 破题 题目 题目描述 ...
- SQL Server 2008 R2——ROW_NUMBER() 去掉不同行中相同列的重复内容
原文:SQL Server 2008 R2--ROW_NUMBER() 去掉不同行中相同列的重复内容 ==================================声明============= ...
- LeetCode 1962. 移除石子使总数最小(优先队列)
文章目录 1. 题目 2. 解题 1. 题目 给你一个整数数组 piles ,数组 下标从 0 开始 ,其中 piles[i] 表示第 i 堆石子中的石子数量. 另给你一个整数 k ,请你执行下述操作 ...
最新文章
- ios(iphone/ipad)开发笔记(1)
- 正则表达式模式修正符
- 牛客题霸 [ 求二叉树的层序遍历] C++题解/答案
- 定义加密函数程序python_一个python自定义的加密解密函数
- 2019年信息安全工程师备考技巧
- 一个简单而强大的单片机内存管理器-不带内存碎片整理
- Android中XML数据解析
- php 弹出下载,php文件下载,不弹出下载框怎么破
- MS SQL Server存储过程的优点有哪些呢?
- 三大运营商将解决新老用户套餐不同权问题;罗永浩与抖音合作;Git 2.26发布 | 极客头条...
- Bootstrap-Table事件和方法
- Canny边缘检测 原理python代码
- 绝地求生服务器维护6.28,绝地求生6月28号更新完怎么进不去 绝地求生更新维护到几点6.28...
- vscode远程配置
- 仿站源码上传服务器,仿爱站站长查询工具网源码带后台完整版
- 记账时,如何对开销进行分类
- 基于深度学习的长江干线水位数据回归预测
- 用 js判断 一个数是否是素数(质数)_js 基础算法题(二)
- 无线服务器功能,无线自组织互联网的用户管理——Radius服务器的功能设计与实现...
- 让AI拥有好奇心,它就可以一直看电视了