2103. 环和杆

news2024/11/26 12:22:11


2103. 环和杆
难度: 简单
来源: 每日一题 2023.11.02

总计有 n 个环,环的颜色可以是红、绿、蓝中的一种。这些环分别穿在 10 根编号为 09 的杆上。

给你一个长度为 2n 的字符串 rings ,表示这 n 个环在杆上的分布。rings 中每两个字符形成一个 颜色位置对 ,用于描述每个环:

  • i 对中的 第一个 字符表示第 i 个环的 颜色('R''G''B')。
  • i 对中的 第二个 字符表示第 i 个环的 位置,也就是位于哪根杆上('0''9')。

例如,"R3G2B1" 表示:共有 n == 3 个环,红色的环在编号为 3 的杆上,绿色的环在编号为 2 的杆上,蓝色的环在编号为 1 的杆上。

找出所有集齐 全部三种颜色 环的杆,并返回这种杆的数量。

示例 1:

输入:rings = "B0B6G0R6R0R6G9"
输出:1
解释:
- 编号 0 的杆上有 3 个环,集齐全部颜色:红、绿、蓝。
- 编号 6 的杆上有 3 个环,但只有红、蓝两种颜色。
- 编号 9 的杆上只有 1 个绿色环。
因此,集齐全部三种颜色环的杆的数目为 1 。

示例 2:

输入:rings = "B0R0G0R9R0B0G0"
输出:1
解释:
- 编号 0 的杆上有 6 个环,集齐全部颜色:红、绿、蓝。
- 编号 9 的杆上只有 1 个红色环。
因此,集齐全部三种颜色环的杆的数目为 1 。

示例 3:

输入:rings = "G4"
输出:0
解释:
只给了一个环,因此,不存在集齐全部三种颜色环的杆。

提示:

  • rings.length == 2 * n
  • 1 <= n <= 100
  • i偶数 ,则 rings[i] 的值可以取 'R''G''B'(下标从 0 开始计数)
  • i奇数 ,则 rings[i] 的值可以取 '0''9' 中的一个数字(下标从 0 开始计数)
class Solution {
    public int countPoints(String rings) {

    }
}

分析与题解

  • HashMap记录法

    这个题目非常简单, 我们只需要通过HashMap记录每一根柱子上的颜色即可. 由于颜色色值可能重复, 所以我们使用 HashSet 作为Value. 利用它进行去重.

    HashMap<Character, Set<Character>> cache = new HashMap<>();
    

    当某一个柱子的颜色添加完当前的色值之后, Set的元素个数变成3个之后, 我们对结果数值进行 result++ 操作.

    if (colors.size() < 3) {
        colors.add(color);
        if (colors.size() == 3) {
            result++;
        }
        cache.put(point, colors);
    }
    

    那么接下来, 我们就看一下整体的题解过程.

    class Solution {
        public int countPoints(String rings) {
            HashMap<Character, Set<Character>> cache = new HashMap<>();
            int result = 0;
            for(int i = 0; i < rings.length(); i = i+2) {
                if(result >= 10) {
                    break;
                }
                Character color = rings.charAt(i);
                Character point = rings.charAt(i+1);
                Set<Character> colors = cache.getOrDefault(point, new HashSet<Character>());
                if (colors.size() < 3) {
                    colors.add(color);
                    if (colors.size() == 3) {
                        result++;
                    }
                    cache.put(point, colors);
                }
            }
            return result;
        }
    }
    

    复杂度分析:

    • 时间复杂度: O(n), 与字符串长度相关的时间复杂度.
    • 空间复杂度: O(n), HashMap与字符串长度相关的时间复杂度.

    结果如下所示.

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

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

相关文章

汇编-算术运算符

下面给出了一些有效表达式和它们的值&#xff1a;

跆拳道馆展示服务预约小程序的效果如何

除了书本上的知识&#xff0c;很多人或孩子会选择学习一些技能&#xff0c;如游泳、钢琴、棋艺花艺等&#xff0c;跆拳道也拥有较高的客户群体&#xff0c;但由于需求属性较强&#xff0c;因此在实际发展中&#xff0c;商家宣传推广、获取线索、服务赋能方面不足。 如今互联网…

在微信小程序怎么领取优惠券

随着科技的发展&#xff0c;微信小程序已经成为我们日常生活中不可或缺的一部分。它为我们提供了各种各样的服务&#xff0c;使我们的生活变得更加便捷。而在这些服务中&#xff0c;领取优惠券成为了大家特别喜欢的功能之一。本文将详细介绍如何在微信小程序中领取优惠券&#…

文件夹怎么设置密码?电脑怎么设置文件夹密码?

在使用电脑的过程中&#xff0c;我们经常使用文件夹来储存管理文件。而为了保护文件夹的数据安全&#xff0c;我们可以为文件夹设置密码。那么&#xff0c;电脑怎么设置文件夹密码呢&#xff1f;下面我们就一起来了解一下。 文件夹设置密码的要求 文件夹设置密码很简单&#…

ELK + kafka 日志方案

概述 本文介绍使用ELK&#xff08;elasticsearch、logstash、kibana&#xff09;  kafka来搭建一个日志系统。主要演示使用spring aop进行日志收集&#xff0c;然后通过kafka将日志发送给logstash&#xff0c;logstash再将日志写入elasticsearch&#xff0c;这样elasticsearc…

【C++】关于构造函数后面冒号“:“的故事------初始化列表(超详细解析,小白一看就懂)

目录 一、前言 二、 初始化的概念区分 三、初始化列表 &#xff08;重点&#xff09; &#x1f4a6;初始化列表的概念理解 &#x1f4a6;初始化列表的注意事项 四、共勉 一、前言 在之前的博客学习中&#xff0c;我们已经学习了【C】的六大默认成员函数 &#xff0c;想必大…

MySQL数据库入门到精通——运维篇(2)

MySQL数据库入门到精通——运维篇&#xff08;2&#xff09; 1. 分库分表1.1 分库分表介绍1.1.1 现在的问题1.1.2 拆分策略1.1.2.1 垂直拆分策略1.1.2.2 水平拆分策略 1.2 Mycat概述1.3 Mycat入门1.4 Mycat配置1.4.1 Schema标签1.4.2 Datanode标签1.4.3 Datahost标签1.4.4 rule…

蓝桥杯每日一题2023.11.2

题目描述 等差素数列 - 蓝桥云课 (lanqiao.cn) 题目分析 对于此题我们需要求出最小的公差并且长度为10&#xff0c; 1.确保序列开始为素数 2.确定枚举的个数 注意&#xff1a;序列中数只是d的变化&#xff0c;可以通过此计算将开始数字后9个数字都计算出来&#xff0c;d是…

PostgreSQL逻辑管理结构

1.数据库逻辑结构介绍 2.数据库基本操作 2.1 创建数据库 CREATE DATABASE name [ [ WITH ] [ OWNER [] user_name ] [ TEMPLATE [] template ] [ ENCODING [] encoding ] [ LC_COLLATE [] lc_collate ] [ LC_CTYPE [] lc_ctype ] [ TABLESPACE [] tablespace ] [ CONNECTION L…

网络取证-Tomcat-简单

题干&#xff1a; 我们的 SOC 团队在公司内部网的一台 Web 服务器上检测到可疑活动。为了更深入地了解情况&#xff0c;团队捕获了网络流量进行分析。此 pcap 文件可能包含一系列恶意活动&#xff0c;这些活动已导致 Apache Tomcat Web 服务器遭到破坏。我们需要进一步调查这一…

【LeetCode:2103. 环和杆 | 模拟】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

nexus搭建npm私有镜像

假设有一个nexus服务&#xff0c;地址为&#xff1a; http://10.10.33.50:8081/ 创建存储空间 登录后创建存储空间&#xff0c;选择存储类型为File&#xff0c;并设置空间名称为 npm-private 创建仓库类型 2.1 创建hosted类型仓库 创建一个名为 npm-hosted 的本地类型仓库 2.…

SpringCloud 微服务全栈体系(十)

第十章 RabbitMQ 一、初识 MQ 1. 同步和异步通讯 微服务间通讯有同步和异步两种方式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要马上回复。 两种方式各有优劣&#xff0c;打电话可以立即得…

弹幕互动游戏运营模式你知道吗?

分享一个今年最新的风口项目&#xff0c;弹幕互动游戏。这种游戏类型是&#xff0c;主播真人出镜主持游戏过程&#xff0c;观众在直播间通过评论和礼物可以加入&#xff0c;并且操控游戏里的角色&#xff0c;等于是游戏和直播的结合。那普通人怎么把握这波风口呢&#xff1f; 说…

氮化硼纳米球 BN纳米球 hexagonal boron nitride

&#xff08;西&#xff09;氮化硼纳米球 &#xff08;安&#xff09;用途&#xff1a;科研 &#xff08;瑞&#xff09;平均粒径&#xff1a;50nm &#xff08;禧&#xff09;纯度&#xff1a;99.9% &#xff08;生&#xff09;比表面积&#xff1a;54.23m2/g &#xff0…

“利用Lazada API揭秘电商数据:一键获取海量商品详情!“

要使用Lazada API获取Lazada商品详情&#xff0c;您需要先注册Lazada开发者账号并获取授权码和密钥。然后&#xff0c;通过调用Lazada API的item_get接口&#xff0c;传入商品ID和国家域名后缀&#xff0c;即可获取到商品的详细信息。 以下是使用Lazada API获取Lazada商品详情…

一篇文章让你了解MySQL中的索引

索引是怎么提高查询效率的&#xff1f;可以为了提高查询效率增加索引么&#xff1f;mysql索引系统采用的数据结构是什么&#xff1f;为什么要使用B树&#xff1f;聚集索引相对于非聚集索引的区别&#xff1f;什么是回表&#xff1f;什么是索引覆盖&#xff1f;什么是最左匹配原…

BSP视频教程第28期:CANopen主从机组网实战,CAN词典工具使用方法以及吃透PDO玩法

视频教程汇总帖&#xff1a;【学以致用&#xff0c;授人以渔】2023视频教程汇总&#xff0c;DSP第12期&#xff0c;ThreadX第9期&#xff0c;BSP驱动第28期&#xff0c;USB实战第5期&#xff0c;GUI实战第3期&#xff08;2023-11-01&#xff09; - STM32F429 - 硬汉嵌入式论坛 …

华为防火墙 配置 SSLVPN

需求&#xff1a; 公司域环境&#xff0c;大陆客户端居家办公室需要连到公司域&#xff0c;这里可以在上海防火墙上面开通SSLVPN&#xff0c;员工就可以透过SSLVPN连通上海公司的内网&#xff0c;但是由于公司域控有2个站点&#xff0c;一个在上海&#xff0c;一个在台北&…

长距离工业RFID读写器的特点

长距离工业RFID读写器是一种特殊的RFID设备&#xff0c;能够在较远的距离内读取和写入RFID标签上的信息。这种读写器通常用于工业自动化、物流跟踪、车辆管理等领域&#xff0c;以实现高效、准确的跟踪和管理。 长距离工业RFID读写器采用先进的射频技术和信号处理技术&#xff…