LeetCode 0299.猜数字游戏:计数

【LetMeFly】299.猜数字游戏:计数

力扣题目链接:https://leetcode.cn/problems/bulls-and-cows/

你在和朋友一起玩 猜数字(Bulls and Cows)游戏,该游戏规则如下:

写出一个秘密数字,并请朋友猜这个数字是多少。朋友每猜测一次,你就会给他一个包含下述信息的提示:

  • 猜测数字中有多少位属于数字和确切位置都猜对了(称为 "Bulls",公牛),
  • 有多少位属于数字猜对了但是位置不对(称为 "Cows",奶牛)。也就是说,这次猜测中有多少位非公牛数字可以通过重新排列转换成公牛数字。

给你一个秘密数字 secret 和朋友猜测的数字 guess ,请你返回对朋友这次猜测的提示。

提示的格式为 "xAyB"x 是公牛个数, y 是奶牛个数,A 表示公牛,B 表示奶牛。

请注意秘密数字和朋友猜测的数字都可能含有重复数字。

 

示例 1:

输入:secret = "1807", guess = "7810"
输出:"1A3B"
解释:数字和位置都对(公牛)用 '|' 连接,数字猜对位置不对(奶牛)的采用斜体加粗标识。
"1807"|
"7810"

示例 2:

输入:secret = "1123", guess = "0111"
输出:"1A1B"
解释:数字和位置都对(公牛)用 '|' 连接,数字猜对位置不对(奶牛)的采用斜体加粗标识。
"1123"        "1123"|      or     |
"0111"        "0111"
注意,两个不匹配的 1 中,只有一个会算作奶牛(数字猜对位置不对)。通过重新排列非公牛数字,其中仅有一个 1 可以成为公牛数字。

 

提示:

  • 1 <= secret.length, guess.length <= 1000
  • secret.length == guess.length
  • secretguess 仅由数字组成

方法一:计数

  • A A A的值为:secret[i] == guess[i]的个数
  • A + B A+B A+B的值为:secret中与guess中相同数字的个数

因此使用两个大小为 10 10 10的整数数组(或哈希表)来分别存放两个字符串中每个数字出现的次数, min ⁡ ( b i n 1 [ i ] , b i n 2 [ i ] ) \min(bin1[i], bin2[i]) min(bin1[i],bin2[i])之和即为 A + B A+B A+B的值。

  • 时间复杂度 O ( l e n ( s e c r e t s ) + C ) O(len(secrets) + C) O(len(secrets)+C),其中 C = 10 C=10 C=10
  • 空间复杂度 O ( C ) O(C) O(C)

AC代码

C++
class Solution {
public:string getHint(string secret, string guess) {int se[10] = {0}, gu[10] = {0};int A = 0, AB = 0;for (char c : secret) {se[c - '0']++;}for (int i = 0; i < guess.size(); i++) {gu[guess[i] - '0']++;if (guess[i] == secret[i]) {A++;}}for (int i = 0; i < 10; i++) {AB += min(se[i], gu[i]);}return to_string(A) + "A" + to_string(AB - A) + "B";}
};
Python
from collections import Counterclass Solution:def getHint(self, secret: str, guess: str) -> str:A = sum(secret[i] == guess[i] for i in range(len(secret)))AB = sum((Counter(secret) & Counter(guess)).values())return f'{A}A{AB - A}B'

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/136598725

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

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

相关文章

随机森林原理sklearn实现

原理 定义 随机森林就是通过集成学习的思想将多棵树集成的一种算法&#xff0c;它的基本单元是决策树&#xff0c; 而它的本质属于机器学习的一大分支——集成学习&#xff08;Ensemble Learning&#xff09;方法。 随机森林的名称中有两个关键词&#xff0c;一个是“随机”&a…

拥塞控制的作用和方法

目录 1.概念 2.慢启动 3.快速恢复 4.快速重传 1.概念 TCP数据流的控制. 为了保证可靠传输和提高网络通信质量,内核需要对TCP数据流进行控制 TCP数据流控制的两个方面:超时重传和拥塞控制, 在计算机网络中的链路容量(即带宽)、交换结点中的缓存和处理机等&#xff0c;都是…

复合查询【MySQL】

文章目录 复合查询测试表 单表查询多表查询子查询单行子查询多行子查询IN 关键字ALL 关键字ANY 关键字 多列子查询 合并查询 复合查询 测试表 雇员信息表中包含三张表&#xff0c;分别是员工表&#xff08;emp&#xff09;、部门表&#xff08;dept&#xff09;和工资等级表&…

11 数据库优化

文章目录 数据库优化数据库设计范式MySQL存储引擎字段数据类型和键的选择explain语句SQL优化表的拆分 数据库优化 数据库设计范式 设计关系数据库时&#xff0c;遵从不同的规范要求&#xff0c;设计出合理的关系型数据库&#xff0c;这些不同的规范要求被称为不同的范式。 目…

命令行hive的基本操作

使用SQL语句在命令行创建Hive库&#xff1a; CREATE DATABASE database_name;其中&#xff0c;database_name是要创建的数据库的名称。例如&#xff1a; CREATE DATABASE mydatabase;这将在Hive中创建一个名为"mydatabase"的数据库。 使用SQL语句在命令行创建Hive…

OS-Copilot:实现具有自我完善能力的通用计算机智能体

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ AI 缩小了人类间的知识和技术差距 论文标题&#xff1a;OS-Copilot: Towards Generalist Computer Agents with Self-Improvement 论文链接&#xff1a;https://arxiv.org/abs/2402.07456 项目主页&a…

【工具相关】zentao用例管理平台部署实践

文章目录 一、备份还原1、数据备份1.1、前言1.2、版本备份1.3、数据备份 2、数据恢复2.1、版本恢复2.2、数据恢复 二、问题处理1、ERROR: SQLSTATE[HY000] [2002] Connection refused 一、备份还原 1、数据备份 1.1、前言 禅道系统从10.6版本以后&#xff0c;新增数据备份设…

Go语言必知必会100问题-20 切片操作实战

前言 有很多gopher将切片的length和capacity混淆&#xff0c;没有彻底理清这两者的区别和联系。理清楚切片的长度和容量这两者的关系&#xff0c;有助于我们合理的对切片进行初始化、通过append追加元素以及进行复制等操作。如果没有深入理解它们&#xff0c;缺少高效操作切片…

云服务器python版本冲突解决(awd平台搭建)

文章目录 yum和apt-getdockerpython环境问题 大家在使用python时&#xff0c;难免会使用他人的代码&#xff0c;自己是python3&#xff0c;而别人的是python2.我们直接运行会报错(比如print函数括号的问题)。但是去修改代码又很麻烦。这里给大家推荐conda。我以我搭建awd平台为…

【Java.mysql】——增删查改(CRUD)之 增查(CR) 附加数据库基础知识

目录 &#x1f6a9;数据库操作 &#x1f388;创建数据库 &#x1f388;使用数据库 &#x1f388;删除数据库 &#x1f6a9;数据类型 &#x1f6a9;表的操作 &#x1f388;创建表 &#x1f308;查看表结构 &#x1f388;删除表 ❗练习(综合运用) &#x1f5a5;️新增…

微信小程序提示确认框

如图所示&#xff0c;如何弹出微信小程序自带默认弹框&#xff1f; 代码如下&#xff1a; wx.showModal({ title: 确认, content: 确定要删除吗&#xff1f;, success (res) { if (res.confirm) { console.log(用户点击确定) } else if (res.cancel) { console.log(用…

【基础算法】二分模板及常见题型

整数二分 模板 模板来自于AcWing&#xff1a; int[] nums new int[n];// 模板1: // l mid // mid l r 1 >> 1; int l 0, r n - 1; // [0, n - 1] while (l < r) {int mid l r 1 >> 1;if (check(mid)) l mid;else r mid - 1; }// 模板2: // r …

STM32CubeIDE基础学习-STM32CubeIDE软件程序仿真调试

STM32CubeIDE基础学习-STM32CubeIDE软件程序仿真调试 前言 一般编写完程序后都会进行编译&#xff0c;看结果是否有存在语法错误&#xff0c;确认没有语法错误之后再进行代码的下载观察硬件执行是否和软件编程预期的结果一致&#xff0c;如果发现硬件执行达不到预期现象&#…

JWT令牌技术

写在前面 我以为&#xff0c;最美的日子&#xff0c;当是晨起侍花&#xff0c;闲来煮茶&#xff0c;阳光下打盹&#xff0c;细雨中漫步&#xff0c;夜灯下读书&#xff0c;在这清浅时光里&#xff0c;一半烟火&#xff0c;一半诗意&#xff0c;任窗外花开花落&#xff0c;云来云…

JVM优化Java代码的秘密:深入解析JVM的内部工作机制

JVM优化Java代码的秘密&#xff1a;深入解析JVM的内部工作机制 当我们谈论Java性能优化时&#xff0c;JVM&#xff08;Java虚拟机&#xff09;的优化策略是无法回避的话题。JVM是Java应用的运行环境&#xff0c;它负责将Java字节码转换为可在特定操作系统和硬件上运行的机器码…

no main manifest attribute,in xxx.jar(关于Spring项目,无法在云服务器上运行jar包的解决方法)

目录 问题详情 解决方法 问题详情 项目可以打包正常&#xff0c;但是云服务器上无法运行&#xff0c;报错&#xff1a;no main manifest attribute&#xff0c;in xxx.jar 解决方法 1.查看pom.xml配置文件&#xff0c;检查以下代码&#xff0c;没有则加上&#xff1a; <…

B+树 和 跳表 的结构及区别,不同的用途【mysql的索引为什么使用B+树而不使用跳表?】

导语&#xff1a; 详解B树与跳表的结构及区别&#xff0c;描述B树与跳表新增数据的过程&#xff0c;解释MySQL与Redis选择对应结构的原因。 mysql数据表里直接遍历这一行行数据&#xff0c;性能就是O(n)&#xff0c;比较慢。为了加速查询&#xff0c;使用了B树来做索引&#x…

HTML5 Web Worker之性能优化

描述 由于 JavaScript 是单线程的&#xff0c;当执行比较耗时的任务时&#xff0c;就会阻塞主线程并导致页面无法响应&#xff0c;这就是 Web Workers 发挥作用的地方。它允许在一个单独的线程&#xff08;称为工作线程&#xff09;中执行耗时的任务。这使得 JavaScript 代码可…

第三周组会——动态多目标优化算法

首先对上周写的DF测试函数进行了优化和增加 DF4 pf: DF5测试函数PF DF6 遇到的问题,在算法问题的参数taut(变化频率)默认是10数字变小时就算是9,算法会跟不上收敛 新读的文献 A Novel Dynamic Multiobjective Optimization Algorithm With Hierarchical Response System 一…

linux系统docker的使用命令

docker命令 命令镜像操作镜像查找镜像拉取查看镜像制作过程推送镜像查看镜像修改名字查看镜像的详细信息删除镜像查看镜像所占空间 容器操作运行容器查看容器查看容器详细信息删除容器启动容器停止容器重启容器暂停容器激活容器杀死容器进入容器查看容器的日志复制文件重命名容…