​力扣解法汇总1042. 不邻接植花

news2024/10/13 22:31:43

 目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

有 n 个花园,按从 1 到 n 标记。另有数组 paths ,其中 paths[i] = [xi, yi] 描述了花园 xi 到花园 yi 的双向路径。在每个花园中,你打算种下四种花之一。

另外,所有花园 最多 有 3 条路径可以进入或离开.

你需要为每个花园选择一种花,使得通过路径相连的任何两个花园中的花的种类互不相同。

以数组形式返回 任一 可行的方案作为答案 answer,其中 answer[i] 为在第 (i+1) 个花园中种植的花的种类。花的种类用  1、2、3、4 表示。保证存在答案。

示例 1:

输入:n = 3, paths = [[1,2],[2,3],[3,1]]
输出:[1,2,3]
解释:
花园 1 和 2 花的种类不同。
花园 2 和 3 花的种类不同。
花园 3 和 1 花的种类不同。
因此,[1,2,3] 是一个满足题意的答案。其他满足题意的答案有 [1,2,4]、[1,4,2] 和 [3,2,1]

示例 2:

输入:n = 4, paths = [[1,2],[3,4]]
输出:[1,2,1,2]

示例 3:

输入:n = 4, paths = [[1,2],[2,3],[3,4],[4,1],[1,3],[2,4]]
输出:[1,2,3,4]

提示:

  • 1 <= n <= 104
  • 0 <= paths.length <= 2 * 104
  • paths[i].length == 2
  • 1 <= xi, yi <= n
  • xi != yi
  • 每个花园 最多 有 3 条路径可以进入或离开

解题思路:

* 解题思路:
* 构建数组类型的List,List中的数据代表与当前花园相斥的花园。
* 构建三个set,代表存放花种类1,2,3。
* 然后遍历n,取出List中的数据,如果数据不和1冲突,则放入1,同理,依次尝试2,3,4。最终放入不冲突的花园。
* 放入花园时记录到result中,最终返回result即可。

代码:

public class Solution1042 {

    public int[] gardenNoAdj(int n, int[][] paths) {
        ArrayList<Integer>[] arrayLists = new ArrayList[n + 1];
        for (int i = 0; i < arrayLists.length; i++) {
            arrayLists[i] = new ArrayList<>();
        }
        HashSet<Integer> set1 = new HashSet<>();
        HashSet<Integer> set2 = new HashSet<>();
        HashSet<Integer> set3 = new HashSet<>();
//        HashSet<Integer> set4 = new HashSet<>();
        int[] result = new int[n];

        for (int[] ints : paths) {
            int a = ints[0];
            int b = ints[1];
            arrayLists[a].add(b);
            arrayLists[b].add(a);
        }
        for (int i = 1; i <= n; i++) {
            ArrayList<Integer> arrayList = arrayLists[i];
            if (tryAdd(set1, arrayList, i)) {
                result[i - 1] = 1;
                continue;
            }
            if (tryAdd(set2, arrayList, i)) {
                result[i - 1] = 2;
                continue;
            }
            if (tryAdd(set3, arrayList, i)) {
                result[i - 1] = 3;
                continue;
            }
            result[i - 1] = 4;
//            set4.add(i);
        }
        return result;
    }

    private boolean tryAdd(HashSet<Integer> set, ArrayList<Integer> arrayList, int currentValue) {
        for (int value : arrayList) {
            if (set.contains(value)) {
                return false;
            }
        }
        set.add(currentValue);
        return true;
    }
}

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

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

相关文章

给定一个正整数字符串,使用Python正则表达式在其千分位上添加逗号

点击上方“Python爬虫与数据挖掘”&#xff0c;进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 楼阁玲珑五云起&#xff0c;其中绰约多仙子。 大家好&#xff0c;我是皮皮。 一、前言 前几天在Python黄金青铜群【沐】问了一个Python正则表达式的问题…

MySQL开发工具评测,包含了Navicat、DBeaver、SQL Studio等12种

面对五花八门的MySQL客户端,开发者该如何选择,今天我整理了12种MySQL开发工具,从产品体验,功能完整度,云适配,计费模式,OS先容性等多个角度进行评估与分析,大家可根据自己的实际情况选择![在这里插入图片描述](https://img-blog.csdnimg.cn/56bdfc89afe743b9b87477d7c0521023.p…

SAP KANBAN 从入门到放弃系列之调拨模式

之前已经有三篇文章写了后台配置相关的介绍&#xff0c;这里不赘述。详见&#xff1a; PP-KANBAN-看板概述 SAP KANBAN 从入门到放弃系列之生产补货模式 SAP KANBAN 从入门到放弃系列之采购补货模式 第一步&#xff1a;补货策略-转库。不同的补充策略的控制类型有不同的作用…

【vue2 pc端】下拉滑动加载更多 vue-data-loading

官网地址 页面项目中使用 <template><!-- 空数据时显示 --><div class"nonono"><img src"/assets/img/404_cloud.png" alt"" v-if"goodslist.length < 0" class"nonnonoimg"></div>&…

燃气管道定位83KHZ地下电子标识器探测仪ED-8000操作指南

1、电子标识器探测工作 燃气管道定位83KHZ地下电子标识器探测仪ED-8000&#xff0c;探测时周边 3 米范围内不能有其他探测仪&#xff0c;保持探测仪垂直向 下&#xff0c;探测仪的末端距离地面 5~10cm 左右&#xff0c;延估计的埋地管线走向水平移动探测仪。当发现持续信号且信…

反射-Class类分析

反射相关的主要类 java.lang.Class&#xff1a;代表一个类&#xff0c;Class对象表示某个类加载后在堆中的对象java.lang.reflect.Method&#xff1a;代表类的方法&#xff0c;Method对象表示某个类的方法java.lang.reflect.Field&#xff1a;代表类的成员变量&#xff0c;Fie…

有手就行——基础XGBoost实战以 iris 数据集为例

基础 XGBoost 实战以 iris 数据集为例 1、导入数据2、数据预处理3、分训练集和测试集4、训练模型构建5、测试集预测准确度6、构建混淆矩阵7、特征重要性 对于很多只是小小使用机器学习&#xff0c;而不是深入了解的人来说&#xff0c;了解各种原理可能是十分痛苦的&#xff0c;…

Gnuplot绘图入门2 快捷方式

Gnuplot绘图入门2——根据多列文本数据绘制图形 Gnuplot绘图入门1以绘制sin(x)的函数图形为例&#xff0c;对Gnuplot进行了简要介绍。这个教程将介绍如何使用Gnuplot对保存在文本文件&#xff08;.txt、.dat文件&#xff09;中的数据进行可视化。 将下面的数据复制下了&#…

Linux安装Nginx,源码安装及创建软连接

前言 Nginx是一个功能强大、高性能、可扩展、易用和安全的Web服务器和反向代理服务器&#xff0c;被广泛应用于企业级和互联网领域 可扩展性&#xff1a;Nginx可以通过添加各种模块和插件来扩展其功能&#xff0c;包括HTTP流控制、SSL加密、压缩和解压缩、访问控制等。 高可靠…

项目设计:迷宫游戏设计day3

一、界面制作 我用的easyx实现图形化界面&#xff0c;在制作第一个界面的时候&#xff0c;第一个界面的功能有开始游戏&#xff0c;退出游戏&#xff0c;排行榜&#xff08;虽然还没实现&#xff09; 那么首先还是得用一个图片贴在上面&#xff0c;这个图片是我自己画的&#…

20230419 生物基础学习- 氨基酸-密码子-突变

文章目录 名称形状密码子-氨基酸对应表简明中文英文和简称突变类型生物化学课程笔记特殊氨基酸的性质缬氨酸和甲硫氨酸 染色体 - RNA - 蛋白质 名称 Phenylalanine,Leucine,Isoleucine,Methionine,Valine,Serine,Proline,Threonine,Alanine,Tyrosine,Histidine,Glutamine,Aspa…

「 计算机网络 」HTTP和RPC的区别与联系

「 计算机网络 」HTTP和RPC的区别与联系 参考&鸣谢 HTTP 和 RPC 的区别 小十七_ Http协议和Rpc协议有什么区别&#xff1f; 俗人杂念 为什么要自研RPC框架&#xff1f;HTTP和RPC的区别 starine 既然有HTTP协议&#xff0c;为什么还要有RPC 小白debug 文章目录 「 计算机网络…

工装识别工装检测系统 yolov7

工装识别工装检测系统通过yolov7python网络模型算法智能分析技术&#xff0c;工装识别工装检测系统对现场人员是否穿戴的进行实时分析&#xff0c;发现现场画面人员未按要求着装&#xff0c;系统会自动抓拍发出警报并讲违规图片视频保存下来&#xff0c;同步回传后台提醒监理人…

uniapp调用七牛云api实现文件上传-node.js向外提供uploadToken的接口-客户端不用下载七牛云的包和SDK-发起网络请求直接上传

uniapp调用七牛云api实现文件上传 实现思路&#xff1a; 1.使用node.js向客户端提供uploadToken&#xff0c;客户端获取uploadToken后使用七牛云的api接口发起网络请求&#xff0c;上传文件&#xff1b; node.js向外提供uploadToken的接口-客户端不用下载七牛云的包和SDK-&…

macOS电脑

UNIX操作系统有一个规范&#xff0c;名叫《单一UNIX规范》&#xff08;Single UNIX Specification&#xff09;。凡是符合这个规范的操作系统都可以叫UNIX操作系统&#xff0c;并且可以通过UNIX官方认证。 UNIX商标认证官网是&#xff1a;The Register of UNIX Certified Prod…

flink动态表的概念详解

目录 前言&#x1f6a9; 动态表和持续不断查询 stream转化成表 连续查询 查询限制 表转化为流 前言&#x1f6a9; 传统的数据库SQL和实时SQL处理的差别还是很大的&#xff0c;这里简单列出一些区别&#xff1a; 尽管存在这些差异&#xff0c;但使用关系查询和SQL处理流并…

界面控件Telerik UI for WinForms使用指南 - 数据绑定 填充(一)

Telerik UI for WinForms拥有适用Windows Forms的110多个令人惊叹的UI控件&#xff0c;所有的UI for WinForms控件都具有完整的主题支持&#xff0c;可以轻松地帮助开发人员在桌面和平板电脑应用程序提供一致美观的下一代用户体验。 Telerik UI for WinForms组件为可视化任何类…

RoBERTa 阅读笔记

RoBERTa 阅读笔记 https://arxiv.org/abs/1907.11692 总的来说&#xff0c;bert在模型上并没有做太多的改进&#xff0c;只是在训练数据和训练策略上进行了一个改进。 相较于BERT的改进 1. Masking策略 stastic: 原始 BERT 的 masking 是固定的&#xff0c;RoBERTa 给相同的…

ChatGPT: 智能对话时代的未来展望与应用实践

ChatGPT: 智能对话时代的未来展望与应用实践 简介 ChatGPT 是一种基于深度学习和自然语言处理技术的人工智能对话模型。它可以通过生成自然语言文本的方式&#xff0c;与用户进行交互式的对话。作为一种先进的对话生成模型&#xff0c;ChatGPT 在近年来快速发展的人工智能领域中…

首次发刊!Coremail管理员社区2023年Q1季刊发布

4月21日&#xff0c;Coremail安全邮件城市沙龙在北京正式开展&#xff0c;此次沙龙活动的主题为“践行教育信创&#xff0c;护航邮件安全”。广东盈世计算机科技有限公司服务副总裁、ICANN UA大使吴秀诚在活动上正式发布《Coremail管理员社区2023年Q1季刊》。 Coremail管理员社…