【LeetCode】每日一题 2023_11_2 环和杆(题目质量不错)

news2024/12/24 21:38:49

文章目录

  • 刷题前唠嗑
  • 题目:环和杆
    • 题目描述
    • 代码与解题思路
    • 看看别人的题解
  • 结语

刷题前唠嗑

今天是简单,我快乐了

题目:环和杆

题目链接:2103. 环和杆

题目描述

代码与解题思路

func countPoints(rings string) (ans int) {
    num := [10][3]int{}
    ch := 0
    for i := 0; i < len(rings); i += 2 {
        if rings[i] == 'R' {
            ch = 0
        } else if rings[i] == 'G' {
            ch = 1
        } else if rings[i] == 'B' {
            ch = 2
        }
        num[rings[i+1]-'0'][ch]++
    }
    for _, v1 := range num {
        cnt := 0
        for _, v2 := range v1 {
            if v2 > 0 {
                cnt++
            }
        }
        if cnt == 3 { // 三个标志位都有数,证明集齐了所有颜色
            ans++
        }
    }
    return ans
}

这道题虽然是简单,但是做起来还是有点难受的,LeetCode 特有的简单题不一定真的简单。我来讲讲我的思路,总的来说,用的是哈希思想+暴力:

我设置了一个二维数组,10 行代表着 0~9 这 10 根杆子,3 列代表着三种颜色是否出现,第一次循环的时候我给每个颜色分配了一个位置,出现了哪个颜色就在对应的杆子上的标志位++

第二次循环就是暴力遍历整个二维数组,遍历每个杆子的标志位,如果标志位上都有标志,也就是 cnt == 3,就证明这个杆子上集齐了所有的颜色。

看看别人的题解

我趣,天才,可以用位运算来做:

func countPoints(rings string) (ans int) {
    mapping := map[byte]int{
        'R': 1, // 001
        'G': 2, // 010
        'B': 4, // 100
    }
    st := [10]int{}
    for i := 0; i < len(rings); i += 2 {
        st[rings[i+1]-'0'] |= mapping[rings[i]] 
    }
    for _, v := range st {
        if v == 7 { // v == 111
            ans++
        }
    }
    return ans
}

用二进制的位来做标志位,只需要用 ‘|’ 就能判断这个颜色存不存在杆子上,学会了,以后遇到这类都需要标志位的问题就可以用位运算来解决。

结语

今天的每日一题质量还是不错的的,值得一刷

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

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

相关文章

OpenCV4(C++)——形态学(腐蚀、膨胀)

文章目录 一、腐蚀&#xff08;erode&#xff09;二、膨胀&#xff08;dilate&#xff09;三、形态学操作四、总结 一、腐蚀&#xff08;erode&#xff09; OpenCV 4提供了用于图像腐蚀的erode()函数。 void cv::erode(src, dst, kernel, anchor, iterations, borderType, bo…

【原创】java+swing+mysql校园论坛管理系统设计与实现

摘要&#xff1a; 随着互联网技术的不断发展&#xff0c;论坛作为一种信息交流和互动的平台&#xff0c;在学校中发挥着越来越重要的作用。校园论坛管理系统是为了方便学校管理论坛、提高论坛的互动性和用户体验而设计的一款系统。一般的论坛网站都是B/S架构&#xff0c;也就是…

NuGet 包私有源部署与创建 NuGet 包创建

一、前言 作为软件研发从业人员&#xff0c;在学习和工作中经常会遇到一些频繁需要的接口或者方法&#xff0c;总不能每次都是重新反复去实现它&#xff0c;更多的是需要随着学习和工作时间的积累&#xff0c;慢慢积攒自己的 类库 或者程序 NuGet 包&#xff0c;这有助于我们技…

引领制造业高质量发展,龙讯旷腾特邀出席2023工业软件生态大会

2023工业软件生态大会 为集中展示“新一代工业软件体系”、“新型产业数字化转型范式”&#xff0c;广东省工业和信息化厅、广东省科学技术厅、广东省教育厅及深圳市人民政府拟于2023年11月5日至6日在深圳市举办2023工业软件生态大会&#xff0c;由广东省数字化学会、电子五所…

关于栈内存的一些总结

我们日常使用的电脑内存一般是小端序&#xff0c;也就是从低地址到高地址。 一般来说栈向下增长。 但是这个方向不是确定的&#xff1a; 在小端序操作系统中&#xff0c;栈和堆的增长方向通常是与特定架构和操作系统相关的&#xff0c;因此不是唯一确定的。 小端序指的是将…

CV计算机视觉每日开源代码Paper with code速览-2023.10.31

精华置顶 墙裂推荐&#xff01;小白如何1个月系统学习CV核心知识&#xff1a;链接 点击CV计算机视觉&#xff0c;关注更多CV干货 论文已打包&#xff0c;点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【基础网络架构】&#xff08;NeurIPS2023&#xff09;Fa…

【源码分析系列】antdv table滚动时固定表头

背景 当页面滚动的时候&#xff0c;如果超过表格的部分&#xff0c;表格的头部会固定在某个位置&#xff0c;方便用户看到数据栏的标。项目采用的是vue2antdv&#xff0c;但是这个版本的table没有sticky属性&#xff0c;所以需要自行解决。 滚动前&#xff1a; 滚动后&#x…

WoShop多语言外贸跨境商城源码(支持直接铺货,多语言,多货币切换)

多语言外贸跨境商城源码是一种用于构建多语言跨境电子商务平台的软件解决方案。这种源码通常支持多种语言&#xff0c;以便让商家能够轻松地将他们的产品和服务销售到全球各地。 以下是多语言外贸跨境商城源码的一些主要特点&#xff1a; 1. 多语言支持&#xff1a;源码通常支持…

类百度知识付费网站

需购买&#xff1a;部署联系&#xff0c;支持压缩包&#xff0c;doc&#xff0c;pdf预览等

什么?前端又出新轮子了?ofa.js

不需要打包的 MVVM JavaScript 框架 无需繁琐学习&#xff0c;无需 npm、nodejs、webpack&#xff0c;即刻上手 <script src"https://cdn.jsdelivr.net/gh/kirakiray/ofa.js/dist/ofa.min.js"></script>官方文档 取代 jQuery 在许多小型项目中&#x…

研发效能DevOps: Git安装

目录 一、理论 1.Git 2.Git 工具 二、实验 1.Git安装 2.配置Git 3. VS Code加载Git 一、理论 1.Git &#xff08;1&#xff09;简介 Git 是一个分布式版本控制及源代码管理工具;Git 可以为你的项目保存若干快照&#xff0c;以此来对整个项目进行版本管理。 Git 是一个…

clusterprolifer go kegg msigdbr 富集分析应该使用哪个数据集,GO?KEGG?Hallmark?

关注微信&#xff1a;生信小博士 5 Overview of enrichment analysis Chapter 5 Overview of enrichment analysis | Biomedical Knowledge Mining using GOSemSim and clusterProfiler 5.1.2 Gene Ontology (GO) Gene Ontology defines concepts/classes used to describ…

毕业生求职,需要做哪些准备工作?

第一、了解企业招聘需求&#xff0c;不同岗位除了对应的专业知识以为&#xff0c;还需要了解岗位的特点&#xff0c;比如&#xff1a;销售类型的工作&#xff0c;口才要好&#xff0c;逻辑要强。如果你懂技术&#xff0c;但是羞于表达&#xff0c;都是无法胜任的。结合自身性格…

ztree调整节点间距及一般使用

1.基本介绍 树形结构菜单的功能属于非常常见的一种菜单交互&#xff0c;本人先后也使用过多种树形结构的插件&#xff0c;有 ztree、xloadtree、treeview、datagrid-tree 等等等等。近期有个功能恰好又要使用tree菜单了&#xff0c;由于可自行选择使用的组件&#xff0c;所以略…

简单工厂模式、工厂方法模式、抽象工厂模式

简介 将实例化代码提取出来&#xff0c;放到一个类中统一管理和维护&#xff0c;达到和主项目依赖关系的解耦&#xff0c;从而提高项目的扩展性和维护性。 工厂模式将复杂的对象创建工作隐藏起来&#xff0c;而仅仅暴露出一个接口供客户使用&#xff0c;具体的创建工作由工厂管…

Axie Infinity 超级任务远超预期,和 YGG 一起探索 Web3 增长新方式!

参与超级任务的实际人数是预期人数的两倍。 超级任务将新玩家引入 Web3 游戏领域&#xff0c;并向他们介绍可以为其玩家旅程提供支持的社区。 Axie Infinity 超级任务旨在向新手和 Axie Classic 老 玩家介绍「Axie Infinity&#xff5c;起源」这款游戏。 整个活动共吸引了 4,…

Luminar Neo Mac/Windows中文版:引领AI图像编辑的革命性时代

Luminar Neo运用先进的AI技术&#xff0c;能够自动化地完成许多繁琐的编辑任务&#xff0c;如色彩校正、噪点消除、人脸识别等。这不仅大大提高了工作效率&#xff0c;同时也降低了对专业知识和技能的要求。无论你是专业摄影师&#xff0c;还是摄影爱好者&#xff0c;甚至是一个…

python写爱心代码【爱心代码编程python可复制粘贴】

python写爱心代码【爱心代码编程python可复制粘贴】 python程序代码&#xff1a;heart.py from math import cos, pi import numpy as np import cv2 import os, glob class HeartSignal: def __init__(self, curve"heart", title"Love U", frame_n…

程序员用接单平台靠谱吗?浅谈一下十年程序员的看法

后疫情时代&#xff0c;经济下行&#xff0c;这年头社会上就业也越来越卷了&#xff0c;程序员人才市场也日趋饱和。不少人嗅到危险气息&#xff0c;已经开始谋求出路了! 咱们程序员的话&#xff0c;“兼职”"接单"也不是个新鲜的话题了。养家糊口也好、财富自由也罢…

优优嗨聚集团:医保新政来袭,乙类OTC、保健品或将退出医保舞台,影响几何?

近日&#xff0c;国家医保局发布征求意见稿&#xff0c;拟将乙类OTC&#xff08;非处方药&#xff09;和保健品从医保目录中移除。这一政策一旦实施&#xff0c;无疑将对广大参保人员和相关企业产生深远影响。本文将为您详细解析这一政策可能带来的影响&#xff0c;以及如何应对…