首页 > 其他分享 >947. 移除最多的同行或同列石头

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

时间:2024-02-14 15:33:37浏览次数:48  
标签:fy fx int 947 sum father 同列 移除 find

原题链接

根据题意我们可以得到一个很有趣的结论:处于同一行或者同一列的石头是共处一个集合的,而一个集合最终可以消除到只剩一个石头。(可以实验一下)

因此我们采取并查集实现。

Code

 

class Solution {
public:
    int sum=0;
    int father[1005];
    map<int ,int >mapx;
    map<int ,int >mapy;
    int find(int x){
        if (father[x]!=x){
            father[x]=find(father[x]);
        }
        return father[x];
    }
    void Union(int x,int y){
        int fx=find(x);
        int fy=find(y);
        if (fx!=fy){
            father[fx]=fy;
            sum--;
        }
    }
    int removeStones(vector<vector<int>>& stones) {
        int n=stones.size();
        sum=n;
        for(int i=0;i<n;i++) father[i]=i;
        for (int i=0;i<n;i++){
            if (mapx.count(stones[i][0])){
                Union(i,mapx[stones[i][0]]);
            }
            else mapx[stones[i][0]]=i;
            if (mapy.count(stones[i][1])){
                Union(i,mapy[stones[i][1]]);
            }
            else mapy[stones[i][1]]=i;
        }
        return n-sum;
    }
};

 

标签:fy,fx,int,947,sum,father,同列,移除,find
From: https://www.cnblogs.com/purple123/p/18015228

相关文章

  • P9478 [NOI2023] 方格染色题解
    题解对于行操作,列操作和对角线操作,实际上仅仅只是在对若干个矩形求面积并而已,这是裸的扫描线题,套用模板即可,此时注意到对角线操作实际上是\(O(n)\)量级的矩阵面积并,因此复杂度是\(O(n\logq+q\logq)\)的量级,只能获得95pts。显然,面积并具有交换性,我们先做\(O(q\logq)\)......
  • 再测python3.13 —— python3.13是否移除了GIL的限制(续)
    前文:python3.13是否移除了GIL的限制x86_64ubuntu22.04环境下编译版本python3.13.0alpha0源码——python3.13.0alpha0的源码编译相关资料:PEP703–MakingtheGlobalInterpreterLockOptionalinCPythonhttps://github.com/python/cpython/issues/108223......
  • 代码随想录算法训练营第一天 | 27. 移除元素 | 704. 二分查找
     704.二分查找 已解答简单 相关标签相关企业 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例1:输入:numstarget输出:解释:nums......
  • [NOI2022] 移除石子
    [NOI2022]移除石子题目描述你正在玩一个名为“移除石子”的小游戏。有\(n\)堆石子排成一行,第\(i\)堆有\(a_i\)枚,你的任务是通过如下的操作将所有石子移除:操作一:选择一堆石子,将其中的至少\(2\)枚石子移除;操作二:选择一个连续的编号区间\([l,r]\)(\(1\lel\ler\l......
  • 代码随想录算法训练营第三天 |203.移除链表元素 , 707.设计链表,206.反转链表
    206.反转链表 已解答简单 相关标签相关企业 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例1:输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]示例2:输入:head=[1,2]输出:[2,1]示例3:输入:head=[]输出:[] 提示:链......
  • 代码随想录算法训练营第三天| 203.移除链表元素,707.设计链表 ,206.反转链表
    203.移除链表元素给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val==val 的节点,并返回 新的头节点 。题目链接:203.移除链表元素-力扣(LeetCode)注意c++中NULL和nullptr的区别。应该用nullptr来表示空指针。/***Definitionforsingly......
  • 【VMware vSAN】使用命令行从vSAN集群中移除ESXi主机并加入到新的vSAN集群。
    说明本文只是陈述了一种方法,不必评判谁对谁错谁好谁坏,选择适合自己的即可。 环境站点名称vCenter版本vSAN集群集群主机主机版本磁盘组vcsa67.lab.comvCenter6.7U3clusteresxi-b1.lab.comesxi-b2.lab.comesxi-b3.lab.comesxi-b4.lab.comESXi6.7U3......
  • 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。
    704.二分查找题目链接:https://leetcode.cn/problems/binary-search/文章讲解:https://programmercarl.com/0704.二分查找.html简单的二分查找法,核心是认识区间的意义,注意以下几点:middle=low+(low+high)/2;这种写法可以防止溢出。注意low和high的循环条件判断,如果是左闭右闭......
  • remove 移除数据
    //云端代码constdb=uniCloud.database()exports.main=async(event,context)=>{constcollection=db.collection(event.name)constdocList=awaitcollection.where(event.data).get()if(!docList.data||docList.data.length===0){......
  • leedcode 移除元素
    自己写的:classSolution:#122334defremoveElement(self,nums,val):numms_len=len(nums)ifnumms_len==0:returnnumms_leni=0whilei<numms_len:ifnums[i]==val:......