当前位置: 首页 > news >正文

LeetCode笔记——1042.不邻接植花

题目

有 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]

思路

1.暴力遍历所有花园的路径,顺序选择花直到出现可选的花。
2.利用哈希表存储花园的路径,顺序遍历n个花园,选择相邻花园已种的下一种花。

C#源码

方法一

public class Solution {public int[] GardenNoAdj(int n, int[][] paths) {int[] arrAns = new int[n];int floweTypes = 4;//遍历花园for (int i = 0; i < n; i++) {//尝试选择for (int j = 1; j <= floweTypes; j++) {if (IsTryChoose(i, j, arrAns, paths)) {arrAns[i] = j; // 选择成功break;}}}return arrAns;}bool IsTryChoose(int garden, int type, int[] arrAns, int[][] paths){foreach (int[] path in paths) {int now = path[0] - 1, next = path[1] - 1;//判断相邻花园是否已选该花,已选则返回falseif (now == garden && arrAns[next] == type)return false;if (next == garden && arrAns[now] == type) return false;}return true;}
}

方法二

public class Solution {public int[] GardenNoAdj(int n, int[][] paths) {Dictionary<int, List<int>> dicGardens = new Dictionary<int, List<int>>();for(int i = 0; i < n; i++){dicGardens[i] = new List<int>(); //创建每个花园记录路径列表,key:花园,value:路径}foreach(int[] path in paths){//记录路径int start = path[0] - 1, end = path[1] - 1;if(start < end)dicGardens[end].Add(start);elsedicGardens[start].Add(end);}//遍历相邻花园计算可选的花int[] arrAns = new int[n];foreach (var item in dicGardens) {int garden = item.Key;List<int> listGardenPath = item.Value;bool[] arrIsTypeUsed = new bool[5]; //1-4代表不同种花foreach(int currentGarden in listGardenPath){int tempType = arrAns[currentGarden];  //记录已选的花arrIsTypeUsed[tempType] = true;}int chooseType = 1;//判断相邻花园是否已选该花,已选则选择下一种花,避免相邻花园同样花while(arrIsTypeUsed[chooseType]){chooseType++;}arrAns[garden] = chooseType;}return arrAns;}
}

来源:力扣(LeetCode)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

相关文章:

LeetCode笔记——1042.不邻接植花

题目 有 n 个花园&#xff0c;按从 1 到 n 标记。另有数组 paths &#xff0c;其中 paths[i] [xi, yi] 描述了花园 xi 到花园 yi 的双向路径。在每个花园中&#xff0c;你打算种下四种花之一。 另外&#xff0c;所有花园 最多 有 3 条路径可以进入或离开. 你需要为每个花园…...

Centos7搭建 Skywalking 单机版

介绍 Skywalking是应用性能监控平台&#xff0c;可用于分布式系统&#xff0c;支持微服务、云原生、Docker、Kubernetes 等多种架构场景。 整体架构如图 Agent &#xff1a;在应用中&#xff0c;收集 Trace、Log、Metrics 等监控数据&#xff0c;使用 RPC、RESTful API、Kafk…...

定制您的设备体验:如何更改Android启动动画

“bootanim"通常是指在操作系统启动过程中显示的动画&#xff0c;尤其是在移动设备或某些定制的Linux发行版中较为常见。这个术语并不是一个标准的命令或工具名称&#xff0c;而是通常用来描述"启动动画”(boot animation)的简称。在Android设备中&#xff0c;启动动…...

Docker日常系列

一、如何build双架构&#xff08;AMDRAM&#xff09;镜像 (1) 需求描述 当k8s集群的硬件资源为ARMAMD混合架构时&#xff0c;镜像需要同时支持2种架构&#xff0c;如何构建镜像。 (2) 操作 准备工作&#xff1a;需要将代码在不同架构下build为镜像&#xff0c;以下默认我们…...

Midjourney该怎么用?从零基础到落地实践

前言 从注册登录到基本的操作界面&#xff0c;提示词组成后缀介绍&#xff0c;到主流的生成图片的方式&#xff0c;以及最重要的提示词咒语分享&#xff0c;还有一些我的使用心得&#xff0c;希望对大家有帮助&#xff01; 喜欢的话欢迎关注我&#xff0c;欢迎点赞收藏评论&am…...

K8S:常用资源对象操作

文章目录 一、使用Replication Controller(RC)、Replica Set(RS) 管理Pod1 Replication Controller&#xff08;RC&#xff09;2 Replication Set&#xff08;RS&#xff09; 二、Deployment的使用1 创建2 滚动升级3 回滚Deployment三、 Pod 自动扩缩容HPA1 使用kubectl autosc…...

算法刷题应用知识补充--基础算法、数据结构篇

这里写目录标题 枚举结 排序结 模拟结 二分题结 高精度加、乘题结 减题结 除题结 结 位运算&#xff08;均是拷贝运算&#xff0c;不会影响原数据&#xff0c;这点要注意&#xff09;&、|、^位运算特性细节知识补充对于n-1的理解异或来实现数字交换找到只出现一次的数据&am…...

ngnix的反向代理是什么?有什么作用?

1、Nginx的反向代理是什么&#xff1f; Nginx的反向代理是一种网络架构模式&#xff0c;其中Nginx服务器作为前端服务器&#xff0c;接收客户端的请求&#xff0c;然后将这些请求转发给后端服务器&#xff08;例如Java应用程序服务器&#xff09;。在这个过程中&#xff0c;客…...

Windows程序设计课程作业-1

文章目录 1. 作业内容2. 设计思路分析与难点3. 代码实现3.1 接口定义3.2 工厂类实现3.3 委托和事件3.4 主函数3.5 代码运行结果 4. 代码地址5. 总结&改进思路6. 阅读参考 1. 作业内容 使用 C# 编码&#xff08;涉及类、接口、委托等关键知识点&#xff09;&#xff0c;实现…...

2024年河北省网络建设与运维-省赛-nginx 和tomcat 服务服务步骤

题目&#xff1a; 5.nginx 和tomcat 服务 任务描述&#xff1a;利用系统自带tomcat&#xff0c;搭建 Tomcat网站。 &#xff08;1&#xff09;配置 linux2 为 nginx 服务器&#xff0c;网站目录为/www/nginx&#xff0c;默认文档 index.html 的内容为“HelloNginx”&#xf…...

CentOS下部署ftp服务

要在linux部署ftp服务首先需要安装vsftpd服务 yum install vsftpd -y 安装完成后需要启动vsftpd服务 systemctl start vsftpd 为了能够访问ftp的端口&#xff0c;需要在防火墙中开启ftp的端口21&#xff0c;否则在使用ftp连接的时候会报错No route to host. 执行如下命令为f…...

伦敦银几点开盘?为什么交易不了?

近期是西方的假期&#xff0c;伦敦银市场因而休市。很多朋友看到之前伦敦银上涨那么厉害&#xff0c;正摩拳擦掌准备入场大展拳脚&#xff0c;然而现在却吃了一个大瘪&#xff1a;怎么我刚准备好大展拳脚&#xff0c;结果却没有开盘呢&#xff1f;到底伦敦银几点开盘&#xff1…...

快手开放平台对接内容管理demo

其中包括用户授权&#xff0c;获取accessToken&#xff0c;获取用户信息&#xff0c;自动上传视频&#xff0c;发布视频&#xff0c;视频列表&#xff0c;删除视频等 <?php namespace app\controller;use app\BaseController; use think\Exception; use think\facade\App;…...

2024年32款数据分析工具分五大类总览

数据分析工具在现代商业和科学中扮演着不可或缺的角色&#xff0c;为组织和个人提供了深入洞察和明智决策的能力。这些工具不仅能够处理大规模的数据集&#xff0c;还能通过强大的分析和可视化功能揭示隐藏在数据背后的模式和趋势。数据分析工具软件主要可以划分为以下五个类别…...

WPS的JS宏如何批量实现文字的超链接

表格中需要对文字进行超链接&#xff0c;每个链接指引到不同的地址。例如&#xff1a; 实现如下表格中&#xff0c;文件名称超级链接到对应的文件路径上&#xff0c;点击对应的文件名称&#xff0c;即可打开对应的文件。 序号文件名称文件路径1变更申请与处理表.xls文档\系统…...

0203逆矩阵-矩阵及其运算-线性代数

文章目录 一、逆矩阵的定义、性质和求法二、逆矩阵的初步应用结语 一、逆矩阵的定义、性质和求法 定义7 对于 n n n阶矩阵A&#xff0c;如果有一个 n n n阶矩阵B&#xff0c;使 A B B A E ABBAE ABBAE 则说矩阵A是可逆的&#xff0c;并把矩阵B称为A的逆矩阵&#xff0c;简称逆…...

加州大学欧文分校英语基础语法专项课程03:Simple Past Tense 学习笔记(完结)

Learn English: Beginning Grammar Specialization Specialization Certificate course 3&#xff1a; Simple Past Tense Course Certificate 本文是学习 https://www.coursera.org/learn/simple-past-tense 这门课的学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。…...

基于Java微信小程序的医院挂号小程序,附源码

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…...

7.网络编程-安全

目录 引言 Session Cookie JWT (JSON Web Token) 网络攻击 CSRF DDoS 其他常见网络攻击类型及应对措施 引言 Session、Cookie 和 JWT 都是Web开发中用于实现用户状态管理和身份验证的技术。它们各自有不同的特点和应用场景&#xff1a; Session Session 是一种服务器…...

信息泄露漏洞的JS整改方案

引言 &#x1f6e1;️ 日常工作中&#xff0c;我们经常会面临线上环境被第三方安全厂商扫描出JS信息泄露漏洞的情况&#xff0c;这给我们的系统安全带来了潜在威胁。但幸运的是&#xff0c;对于这类漏洞的整改并不复杂。本文将介绍几种可行的整改方法&#xff0c;以及其中一种…...

WKWebView的使用

一、简介 在iOS中&#xff0c;WKWebView是WebKit框架提供的一个用于展示网页内容的控件&#xff0c;相比UIWebView有更好的性能和功能。 以下是在iOS中使用WKWebView的基本步骤&#xff1a; 1.1 导入WebKit框架 import WebKit1.2 创建WKWebView实例 let webView WKWebVie…...

iOS MT19937随机数生成,结合AES-CBC加密算法实现。

按处理顺序说明&#xff1a; 1. 生成随机数序列字符串函数 生成方法MT19937&#xff0c;初始种子seed&#xff0c;利用C库方法&#xff0c;生成&#xff1a; #include <random> //C 库头文件引入NSString * JKJMT19937Seed(uint32_t seed) {NSLog("MT19937Seed种…...

阿里云2024年优惠券获取方法及使用教程详解

阿里云是阿里巴巴集团旗下的云计算服务提供商&#xff0c;是全球领先的云计算及人工智能科技公司之一。提供免费试用、云服务器、云数据库、云安全、云企业应用等云计算服务&#xff0c;以及大数据、人工智能服务、精准定制基于场景的行业解决方案。 阿里云2024年优惠券的获取方…...

hadoop中hdfs的fsimage文件与edits文件

hadoop中hdfs的fsimage文件与edits文件的作用 首先&#xff0c;我们抛出fsimage和edits文件的功能描述。 Fsimage文件: HDFS文件系统元数据的一个永久性的检查点&#xff0c;其中包含HDFS文件系统的 所有目录和文件inode的序列化信息。 Edits文件:存放HDFS文件系统的所有更…...

最新版两款不同版SEO超级外链工具PHP源码

可根据个人感觉喜好自行任意选择不同版本使用&#xff08;版V1或版V2&#xff09; 请将zip文件全部解压缩即可访问&#xff01; 源码全部开源&#xff0c;支持上传二级目录访问 已更新增加大量高质量外链&#xff08;若需要增加修改其他外链请打开txt文件&#xff09;修复优…...

.net框架和c#程序设计第二次测试

一、实验内容 1、设计一个用户登录页面webform1.aspx&#xff0c;效果如下图所示&#xff1a; 2、点击webform1.aspx中“还未注册”连接进入register.aspx&#xff0c;注册页面效果如下图所示&#xff1a;点击用户注册信息到usershow.aspx页面&#xff0c;并显示注册的用户信息…...

芒果YOLOv8改进组合157:动态标签分配ATSS+新颖高效AsDDet检测头组合改进,共同助力VisDrone涨点1.8%,小目标高效涨点

💡本篇内容:【芒果YOLOv8改进ATSS标签分配策略|第三集】芒果YOLOv8改进组合157:动态标签分配ATSS+新颖高效AsDDet检测头组合改进,共同助力VisDrone涨点1.8%,小目标高效涨点 💡🚀🚀🚀本博客 标签分配策略ATSS改进+ 新颖高效AsDDet检测头组合改进,适用于 YOLOv8 …...

自媒体内容创作助手:7款必备ai写作工具一览! #学习方法#科技#其他

这些工具不仅可以快速生成高质量的文本内容&#xff0c;还可以根据用户的需求进行个性化定制。它们可以帮助我们节省大量的时间和精力&#xff0c;让我们更加专注于创意和细节的打磨。本文将为大家详细介绍几个AI写作工具&#xff0c;让你在写作领域更上一层楼。 1.七燕写作 这…...

文心一言 vs GPT-4 -- 全面横向比较

文心一言和GPT-4都是当前非常先进的自然语言处理模型&#xff0c;它们在语言理解、生成和翻译等方面都展现出了出色的能力。以下是对这两个模型的全面横向比较&#xff1a; 核心技术基础&#xff1a; 文心一言&#xff1a;是基于BERT&#xff08;Bidirectional Encoder Repre…...

Leetcode C语言习题

Leetcode习题27&#xff1a;移除元素 题目&#xff1a; 说明&#xff1a; 示例&#xff1a; 题解&#xff1a; 方法一&#xff1a;&#xff08;开辟额外的数组空间&#xff09; 我们可以创建一个新的数组&#xff0c;然后用循环来遍历原数组&#xff0c;将原数组中不为 val…...