947. 移除最多的同行或同列石头

news2025/4/8 6:05:27

947. 移除最多的同行或同列石头

  • 原题链接:
  • 完成情况:
  • 解题思路:
  • 参考代码:

原题链接:

947. 移除最多的同行或同列石头

https://leetcode.cn/problems/most-stones-removed-with-same-row-or-column/description/

完成情况:

在这里插入图片描述

解题思路:

在这里插入图片描述

在这里插入图片描述

参考代码:

package 西湖算法题解___中等题02;

import java.util.HashMap;
import java.util.Map;

public class __947移除最多的同行或同列石头 {
	/**
	 每个坐标点上最多只能有一块石头。
	 如果一块石头的【同行或者同列】上有其他石头存在,那么就可以移除这块石头。(以自身为参考,有满足要求的话,则删除自身)

	 给你一个长度为 n 的数组 stones ,其中 stones[i] = [xi, yi] 表示第 i 块石头的位置,返回 可以移除的石子 的最大数量。
	 ->-> 怎么去移出里面的元素,才能使移出的元素最多呢?

	 * @param stones
	 * @return
	 */
	public int removeStones(int[][] stones) {
		//最多可以移除的石头的个数 = 所有石头的个数 - 连通分量的个数。
		//需要连通分量的个数
		UnionComponentFind unionComponentFind = new UnionComponentFind();
		for (int [] stone : stones){    //每一个两元素数组代表着一个坐标
			//下面这三种写法任选其一
			unionComponentFind.union(~stone[0],stone[1]);
//			unionComponentFind.union(stone[0] - 10001,stone[1]);
//			unionComponentFind.union(stone[0] + 10001,stone[1]);
		}
		return stones.length - unionComponentFind.getCount();
	}

	/**
	 *
	 */
	private class UnionComponentFind{
		private Map<Integer,Integer> parent;
		private int count;

		public UnionComponentFind() {
			this.parent = new HashMap<>();
			this.count = 0;
		}

		public Map<Integer, Integer> getParent() {
			return parent;
		}

		public void setParent(Map<Integer, Integer> parent) {
			this.parent = parent;
		}

		public int getCount() {
			return count;
		}

		public void setCount(int count) {
			this.count = count;
		}

		/**
		 *
		 * @param x
		 * @return
		 */
		public int find(int x){
			if (!parent.containsKey(x)){
				parent.put(x,x);        //添加进来的首个节点。
				// 并查集中新加入一个结点,结点的父亲结点是它自己,所以连通分量的总数 +1
				count++;
			}
			if (x != parent.get(x)){
				parent.put(x,find(parent.get(x)));
			}
			return parent.get(x);
		}

		/**
		 *
		 * @param x
		 * @param y
		 */
		public void union(int x,int y){
			int rootX = find(x);
			int rootY = find(y);
			if (rootX == rootY){
				return;
			}
			parent.put(rootX,rootY);
			//两个连通分量合并成为一个,连通分量的总数 - 1
			count--;
		}
	}
}

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

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

相关文章

基于Flask+websocket实现一个在线聊天室网站系统

在今天的互联网时代&#xff0c;实时通信成为了许多应用和服务的核心特色。从社交媒体到在线游戏&#xff0c;无处不在的即时互动为用户带来了难以置信的沉浸体验。有了这种背景&#xff0c;为何不深入了解如何构建自己的实时聊天应用呢&#xff1f;在本文中&#xff0c;我们将…

数字化转型对企业有哪些优势?

数字化转型为企业提供了众多优势&#xff0c;帮助他们在日益数字化的世界中保持竞争力、敏捷性和响应能力。以下是一些主要优势&#xff1a; 1.提高效率和生产力&#xff1a; 重复性任务和流程的自动化可以减少人为错误&#xff0c;并使员工能够专注于更具战略性的任务。简化…

管理类联考——数学——汇总篇——知识点突破——应用题——不定方程

&#x1f44a; 当方程或方程组种未知数较多&#xff0c;而无法通过解方程的角度来确定数值&#xff0c;这种方程称为不定方程。不定方程必须结合所给的一些性质&#xff0c;如整除、奇数偶数、质数合数、范围大小等特征才能确定答案。 ⛲️ 一、考点讲解 不定方程特征 在应…

CSS:隐藏移动端的滚动条的方式

目录 方式一&#xff1a;-webkit-scrollbar方式二&#xff1a;overflow方式三&#xff1a;clip-path方式四&#xff1a;mask 遮罩总结参考 移动端开发中&#xff0c;有一个横向滚动元素&#xff0c;产品告诉我不需要滚动条&#xff0c;我说这个简单&#xff0c;隐藏一下不就行了…

Latex多行合并/多列合并详解

1、宏包 在\begin{document}前加入宏包 \usepackage{multirow} 2、多行合并 代码 三行合并 \multirow{3}{*}{a}例子 \begin{center}\tabcaption{表}\label{tab:2}\renewcommand\tabcolsep{1pt}%调整表格长度\begin{tabular} {cccccc}\toprule名称&名称&名称&名…

粉底液、口红、睫毛膏,眼膜等护肤品和彩妆上架亚马逊需要做什么认证?HRIPT/RIPT测试,斑贴测试,COA认证和BCOP认证办理

亚马逊要求化妆、美容类睫毛膏、眼膜、足贴、假睫毛、洗发水、美甲套装等HRIPT / RIPTCOA测试&#xff0c;如果是眼睛这个部位使用的话 还需要出示BCOP认证 为了确保在使用产品或原料后不会产生潜在的刺激或过敏。亚马逊要求化妆品&#xff0c;美容产品&#xff0c;指甲胶等需…

终于搞懂了线程的状态以及状态转换

1 线程的状态 线程的状态是一个枚举类型 Thread.State public class ThreadState {public static void main(String[] args) {for (Thread.State state : Thread.State.values()) {System.out.println(state);}} }新建&#xff08;New&#xff09;&#xff1a; 意义&#xff1…

安卓绘制原理之 MeasureCache优化了什么?

安卓绘制原理概览_油炸板蓝根的博客-CSDN博客 搜了一下&#xff0c;全网居然没有人提过 measureCache。 在前文中提到过&#xff0c;measure的时候&#xff0c;如果命中了 measureCache&#xff0c;会跳过 onMeasure&#xff0c;同时会设置 PFLAG3_MEASURE_NEEDED_BEFORE_LAYOU…

Mysql树形表的两种查询方案(递归与自连接)

你有没有遇到过这样一种情况&#xff1a; 一张表就实现了一对多的关系&#xff0c;并且表中每一行数据都存在“爷爷-父亲-儿子-…”的联系&#xff0c;这也就是所谓的树形结构 对于这样的表很显然想要通过查询来实现价值绝对是不能只靠select * from table 来实现的&#xff0…

微服务·数据一致-事务与分布式事务

微服务数据一致-事务与分布式事务 概述 事务是计算机科学和数据库管理中的一个关键概念&#xff0c;用于确保数据的一致性和可靠想。事务管理是大多数应用程序和数据库系统中不可或缺的一部分。分布式事务扩展了事务的概念&#xff0c;用于多个分布式系统和服务的数据一致性管…

1、java基本语法

1.、标识符、关键字、注释 标识符&#xff1a;对类、对象、变量、方法、数组等起个名字。 合法的标识符&#xff1a; 由字母、数字、下划线“_”组成&#xff0c;并且首字符不能是数字。不能把java关键字和保留字作为标识符。标识符区分大小写字母。 理论上只要满足上面三个…

Vuex -访问(modules)模块中的 state mutations actions getters

文章目录 四大核心复习一、获取模块内的state数据1.目标&#xff1a;2.使用模块中的数据3.代码示例 二、获取模块内的getters数据1.目标&#xff1a;2.语法&#xff1a;3.代码演示 三、获取模块内的mutations方法1.目标&#xff1a;2.注意&#xff1a;3.调用方式&#xff1a;4.…

LRTA*(Learning-RTA*)

1、基本概念 LRTA* 算法是对RTA* 算法的改进&#xff0c;在RTA* 的原论文中&#xff0c;提到了&#xff1a; Unfortunately, while RTA* as described above is ideally suited to single problem solving trials, it must be modified to accommodate multi-trial learning.…

集成学习-树模型

可以分为三部分学习树模型&#xff1a; 基本树&#xff08;包括 ID3、C4.5、CART&#xff09;.Random Forest、Adaboost、GBDTXgboost 和 LightGBM。 基本树 选择特征的准则 ID3&#xff1a;信息增益max C4.5&#xff1a;信息增益比max CART&#xff1a;基尼指数min 优缺…

【uniapp关联unicloud,阿里云云服务空间】unicloud本地调试服务启动失败:当前项目未关联unicloud服务空间,请调整后重新运行,已解决

最近开发app项目&#xff0c;很多都是第一次上手 1、在Hbuider中运行项目&#xff0c;出现如下提示 2、项目根目录下已有uniCloud文件夹 3、如果云开发环境未创建&#xff0c;可以右击项目&#xff0c;选择创建uniCloud云开发环境 4、创建好的目录如下&#xff0c;index.js中…

图解三重积分的对称性

1.图解三重积分的对称性 关于三重积分详见&#xff1a;三重积分(Triple Integral) 三重积分的对称性原理与二重积分类似&#xff0c;关于二重积分的对称性详见&#xff1a;图解二重积分的对称性 被积函数 f ( x , y , z ) f(x,y,z) f(x,y,z)可以有不同的物理意义&#xff0c;…

查询设计之查询条件对结果的影响

在sql使用中&#xff0c;最常用的就是查询。 在实践过程中&#xff0c;丰富的查询场景也使得查询sql有多种写法&#xff0c;不同的写法会带来不同的效果 以下&#xff0c;就查询条件对结果的影响。 一、数据 二、需求 把查询 type A’的 user 以及 type ‘A’ 的 department…

网络爬虫的意义:连接信息世界的纽带

本文将探讨网络爬虫的意义及其在连接信息世界中的重要作用。网络爬虫作为一种自动化程序&#xff0c;通过收集和提取互联网上的数据&#xff0c;为搜索引擎、数据分析和机器学习等领域提供了宝贵的资源。同时&#xff0c;我们也将探讨网络爬虫的伦理和法律责任&#xff0c;以及…

5、DVWA——文件上传

文章目录 一、文件上传原理二、low2.1 源码分析2.2 通关步骤 三、medium3.1 源码分析3.2 通关思路 四、high4.1 源码分析4.2 通关思路 一、文件上传原理 文件上传漏洞一般指用户上传了一个可执行的脚本文件&#xff0c;并通过此脚本文件获得了执行服务器端命令的能力。文件上传…

C语言经典100例题(45)--学习使用register定义变量的方法

目录 题目 问题分析 代码 运行结果 题目 学习使用register定义变量的方法 问题分析 register是做声明的&#xff0c;为了提高效率。 register变量不能做取地址运算符&操作。 声明变量具有register储类型就要求编译器把变量存储在寄存器中&#xff0c;而不是像其他变量…