0416 leetcode每日一题 1042. 不邻接植花

news2024/11/16 9:53:45

题目描述:

 力扣

思路:

从题目描述中可知,花的种类一共有四种,且一定有满足题意的答案。

可以首先将所有花园中的花设置为0,然后遍历与其相邻的花园,选择没有使用过的花的种类(1 2 3 4),将该花园设置成对应的花朵即可。

java语言:

class Solution {
    public int[] gardenNoAdj(int n, int[][] paths) {
        //使用hashmap存储相邻花园。
        HashMap<Integer, ArrayList<Integer>> map = new HashMap<>();
        for(int i = 0; i < paths.length; i++) {
            ArrayList<Integer> list1 = map.getOrDefault(paths[i][0], new ArrayList<Integer>());
            list1.add(paths[i][1]);
            map.put(paths[i][0], list1);
            ArrayList<Integer> list2 = map.getOrDefault(paths[i][1], new ArrayList<Integer>());
            list2.add(paths[i][0]);
            map.put(paths[i][1], list2);
        }
        int[] res = new int[n];
        res[0] = 1;
        for(int i = 1; i < n; i++) {
            int[] flag = new int[5];
            ArrayList<Integer> list = map.getOrDefault(i+1, new ArrayList<Integer>());
            //遍历相邻花园,将已经设置过的花的种类进行标记。
            for(int j = 0; j < list.size(); j++) {
                flag[res[list.get(j)-1]] = 1;
            }
            //选择没有用过的花对该花园进行标记。
            for(int j = 1; j <= 4; j++) {
                if(flag[j] == 0) {
                    res[i] = j;
                    break;
                }
            }
        }
        return res;

    }
}

js语言:

/**
 * @param {number} n
 * @param {number[][]} paths
 * @return {number[]}
 */
var gardenNoAdj = function(n, paths) {
    let map = new Map();
    for(let i = 0; i < paths.length; i++) {
        let list1 = [];
        if(map.has(paths[i][0])) {
            list1 = map.get(paths[i][0]);
        }
        list1.push(paths[i][1]);
        map.set(paths[i][0], list1);
        let list2 = [];
        if(map.has(paths[i][1])) {
            list2 = map.get(paths[i][1]);
        }
        list2.push(paths[i][0]);
        map.set(paths[i][1],list2);
    }
    let res = new Array(n);
    res.fill(0);
    res[0] = 1;
    for(let i = 1; i < n; i++) {
        let flag = new Array(5);
        let list = []
        if(map.has(i+1)) {
            list = map.get(i+1);
        }
        for(let j = 0; j < list.length; j++) {
            flag[res[list[j]-1]] = 1;
        }
        for(let j = 1; j <= 4; j++) {
            if(flag[j] !== 1) {
                res[i] = j;
                break;
            }
        }
    }
    return res;
};

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

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

相关文章

【ChatGPT】阿里版 ChatGPT 突然官宣意味着什么?

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 阿里版 ChatGPT 突然官宣 ​ ChatGPT 技术在 AI 领域的重要性 自然语言生成 上下文连续性 多语言支持 ChatGPT 未来可能的应用场景 社交领域 商业领域 ​编辑 医疗领域…

LeetCode_单调栈_中等_1019.链表中的下一个更大节点

目录1.题目2.思路3.代码实现&#xff08;Java&#xff09;1.题目 给定一个长度为 n 的链表 head。对于列表中的每个节点&#xff0c;查找下一个更大节点的值。也就是说&#xff0c;对于每个节点&#xff0c;找到它旁边的第一个节点的值&#xff0c;这个节点的值严格大于它的值…

Vue项目创建流程

一、安装Vue和查看Vue版本 1.1安装Vue npm i -g @vue/cli1.2 查看Vue Vue -V二、新建一个Vue项目 2.1 使用命令创建项目 vue create vue-project # vue-project是项目名称Default 表示使用默认配置,默认勾选babel、eslint ,回车之后直接进入装包 Manually 自定义勾选特性…

Vector - CAPL - CAN x 总线信息获取(续2)

继续.... 目录 ErrorFrameCount -- 错误帧数量 代码示例 ErrorFrameRate -- 错误帧速率 代码示例 ExtendedFrameCount -- 扩展帧数量 代码示例 ExtendedFrameRate -- 扩展帧速率 代码示例 ExtendedRemoteFrameCount -- 远程扩展帧数量 代码示例 ExtendedRemoteFrameRa…

01背包的算法设计和代码实现以及01背包问题的复杂度计算

01背包的算法设计和代码实现以及01背包问题的复杂度计算 1.算法分析 01背包问题是一个经典的动态规划问题&#xff0c;其目标是在给定一组物品和一个背包容量的情况下&#xff0c;选择一些物品放入背包中&#xff0c;使得背包容量最大化。以下是01背包问题的算法设计和代码实…

Python中的8种运算符

✅作者简介&#xff1a;CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1&#x1f3c6; &#x1f4c3;个人主页&#xff1a;hacker707的csdn博客 &#x1f525;系列专栏&#xff1a;零基础入门篇 &#x1f4ac;个人格言&#xff1a;不断的翻越一座…

【消息队列】聊一下Kafka副本机制

副本机制的好处 副本在分布式系统下&#xff0c;不同的网络互联的机器保存同一份数据。我们知道在分布式系统中&#xff0c;都会通过数据镜像、数据冗余的方式来提升高可用性。 提供数据冗余&#xff1a;这点比较好理解&#xff0c;说白了就是通过数据冗余在不同的服务器上&a…

使用Github+picGo搭建图床,超详细教程

超详细教程使用GitHubPicGo搭建图床配置GitHub创建图床仓库生成token配置PicGo下载配置配置Typora打开Typora的设置设置picgo的监听端口号使用GitHubPicGo搭建图床 起因&#xff1a;gitee的图床挂了&#xff0c;原因是gitee的防盗链&#xff0c;所以就打算更换图床&#xff0c…

【周末闲谈】新的编程方式,程序员的未来何在?

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️周末闲谈】 系列目录 ✨第一周 二进制VS三进制 ✨第二周 文心一言&#xff0c;模仿还是超越&#xff1f; ✨第二周 畅想AR 文章目录系列目录前言了解编程语言机器语言&#x1f4bb;&#x1f4bb;&am…

二分查找(二分法,折半查找)

&#x1f4dd;个人主页&#xff1a;爱吃炫迈 &#x1f48c;系列专栏&#xff1a;数据结构与算法 &#x1f9d1;‍&#x1f4bb;座右铭&#xff1a;道阻且长&#xff0c;行则将至&#x1f497; 文章目录二分查找算法要求查找过程二分法的两种写法LeetCode&#xff08;持续更新&a…

【Docker】Docker网络

介绍 docker启动 在docker启动之后 &#xff0c;会生成一个docker0的虚拟网桥 [root192 kd]# ifconfig docker0: flags4099<UP,BROADCAST,MULTICAST> mtu 1500inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255inet6 fe80::42:faff:fef5:a71d prefix…

linux服务器如何测试网速

linux服务器如何测试网速 说到测网速我相信很多小伙伴都知道在自己的电脑上操作&#xff0c;但我们平时用的比较多的系统还是Windows系统&#xff0c;那么到了linux系统上你知道怎么测网速吗&#xff1f; 今天还是艾西的服务器小知识跟大家讲讲在linux系统上怎么测网速&#x…

Dapr微服务

** 一、Dapr是什么 ** 官方解释&#xff1a;Dapr (Distributed Application Runtime)是一个可移植的、事件驱动的运行时 可移植&#xff1a;指与软件从某一环境转移到另一环境下的难易程度。事件驱动&#xff1a;调用与被调用方解耦 自己理解&#xff1a;Dapr为任何语言编写…

springboot如何优雅的打印项目日志

文章目录如何优雅的打印项目日志原理实现日志打印Filter注入容器如何优雅的打印项目日志 框架 springboot 原理 使用filter拦截请求&#xff0c;打印出请求、响应&#xff0c;及耗时 知识点 1、OncePerRequestFilter Filter base class that aims to guarantee a single …

【数据结构与算法篇】时间复杂度与空间复杂度

目录 一、数据结构和算法 1.什么是数据结构&#xff1f; 2.什么是算法&#xff1f; 3.数据结构和算法的重要性 二、算法的时间复杂度和空间复杂度 1.算法效率 2.算法的复杂度 3.复杂度在校招中的考察 4.时间复杂度 5.空间复杂度 6.常见复杂度对比 7.复杂度的OJ练…

鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;公司对内部工程管…

数据结构入门-10-AVL

文章目录一、AVL的性质1.2 平衡二叉树定义二、添加需达到平衡2.1 平衡因子2.1.2 平衡因子的实现2.2 判断该二叉树是否为平衡二叉树2.3 左旋右旋2.3.1 左旋LL右旋RR基本原理2.3.2 LR RLLRRL三、AVL中删除一、AVL的性质 平衡二叉树 AVL树得名于它的俄罗斯发明者G. M. Adelson-Ve…

信息系统项目管理师第四版知识摘编:第23章 组织通用管理​

第23章 组织通用管理​ 组织通用管理是项目管理的关键前提和基础&#xff0c;它为项目管理提供思想路线和基本原则与方法&#xff0c;项目管理则是通用管理方法在特定场景下的具体表现。​ 23.1人力资源管理​ 23.1.1人力资源管理基础​ 在人力资源管理方面&#xff0c;组织…

对XSS攻击进行的一些总结

简介 XSS漏洞最早被发现是在1996年&#xff0c;由于JavaScript的出现&#xff0c;导致在Web应用程序中存在了一些安全问题。在1997年&#xff0c;高智文(Gareth Owen)也就是“XSS之父”&#xff0c;在他的博客中描述了一种称为“脚本注入”(script injection)的攻击技术&#x…

分享一个RecyclerView嵌套webview 滑动不流畅的解决方法

因RecyclerView 和webview 或者X5的webview 都具有滑动的功能 所以在做嵌套的时候 会出现滑动不流畅 等问题 解决思路 就是判断滑动的时候 是否自身消耗 或者父布局的RecycleView消耗 开发中还遇到个问题 就是 更换成x5的时候 getScrolly() 返回的一直是0 改成getWebScrollY(…