LeetCode每日一题4.20

news2025/4/25 3:35:34

781.森林中的兔子

问题

在这里插入图片描述

问题分析

根据题目描述,我们需要解决的问题是:给定一个数组 answers,其中每个元素表示某只兔子回答的“还有多少只兔子与你颜色相同”,要求返回森林中兔子的最少数目。

思路

理解 answers 数组:
answers[i] = x 表示第 i 只兔子回答说还有 x 只兔子与它的颜色相同。
因此,每种颜色的兔子数量为 x + 1(包括它自己)。
统计每种回答的频率:
使用一个字典来统计每种回答(即 x)出现的次数。
计算每种颜色的兔子数量:
对于每种回答 x,如果其出现次数为 freq,则该颜色的兔子数量为 k * (x + 1),其中 k 是使得 k * (x + 1) >= freq 的最小整数。
汇总所有颜色的兔子数量:
将每种颜色的兔子数量相加,得到总数。

代码

class Solution:
    def numRabbits(self, answers: List[int]) -> int:
        # 统计每种回答的频率
        count = Counter(answers)

        total_rabbits = 0
        for answer, freq in count.items():
            # 每种颜色的兔子数量为 (answer + 1)
            rabbits_per_color = answer + 1
            # 需要的颜色组数
            color_groups = (freq + rabbits_per_color - 1) // rabbits_per_color
            # 该颜色的兔子总数
            total_rabbits += color_groups * rabbits_per_color

        return total_rabbits

复杂度分析

时间复杂度:O(n)(其中 n 是 answers 的长度)
空间复杂度:O(m)(其中 m 是 answers 中不同元素的数量)

学习

导入必要的模块:
Counter 用于统计 answers 中每个元素的频率。
定义 Solution 类和 numRabbits 方法:
numRabbits 方法接收一个列表 answers 作为参数。
统计每种回答的频率:
使用 Counter(answers) 得到每个回答的频率。
计算总兔子数:
遍历 count 字典,对于每种回答 answer 和其频率 freq:
计算每种颜色的兔子数量 rabbits_per_color = answer + 1。
计算需要的颜色组数 color_groups = (freq + rabbits_per_color - 1) // rabbits_per_color。
累加该颜色的兔子总数 total_rabbits += color_groups * rabbits_per_color。
返回结果:
最终返回 total_rabbits 作为结果。

color_groups = (freq + rabbits_per_color - 1) // rabbits_per_color

这行代码的目的是计算对于特定的 answer(即特定的 rabbits_per_color),需要多少组这样的兔子来覆盖所有的 freq 只兔子。
示例:

示例 1:answers = [1, 1, 2]
answer = 1 时,freq = 2(有两个 1),rabbits_per_color = 2。
color_groups = (2 + 2 - 1) // 2 = 3 // 2 = 1,即需要 1 组 2 只兔子。
answer = 2 时,freq = 1(有一个 2),rabbits_per_color = 3。
color_groups = (1 + 3 - 1) // 3 = 3 // 3 = 1,即需要 1 组 3 只兔子。
示例 2:answers = [10, 10, 10]
answer = 10 时,freq = 3(有三个 10),rabbits_per_color = 11。
color_groups = (3 + 11 - 1) // 11 = 13 // 11 = 1,即需要 1 组 11 只兔子。
4. total_rabbits += color_groups * rabbits_per_color
最后,将每种颜色组的兔子数量累加到 total_rabbits 中,得到最终的兔子总数。

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

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

相关文章

Leetcode - 周赛446

目录 一、3522. 执行指令后的得分二、3523. 非递减数组的最大长度三、3524. 求出数组的 X 值 I四、3525. 求出数组的 X 值 II 一、3522. 执行指令后的得分 题目链接 本题就是一道模拟题,代码如下: class Solution {public long calculateScore(String…

时序数据库 TDengine 助力石油石化业务, 平滑接替 Oracle 数据库

小T导读:胜软科技在石油石化行业中选择使用 TDengine 处理时序数据,不仅显著降低了运维数据库的成本,也大幅减少了存储空间的占用,实现了从原有的 40 多套 Oracle 数据库向仅 9 套 TDengine集群的精简替换。在迁移过程中&#xff…

macOS 系统设置息屏情况下,PHP等后台脚本继续执行

在 macOS 系统下,当屏幕息屏或合上盖子时,后台脚本程序是否会继续运行,主要取决于以下几个因素: 1. 系统睡眠状态的影响 默认情况:合盖/息屏后,Mac 会进入「睡眠模式」(部分硬件休眠&#xff…

Prompt-Tuning 提示词微调

1. Hard Prompt 定义: Hard prompt 是一种更为具体和明确的提示,要求模型按照给定的信息生成精确的结果,通常用于需要模型提供准确答案的任务. 原理: Prompt Tuning原理如下图所示:冻结主模型全部参数,在…

asp.net core webapi+efcore

简洁的restfull风格 目前c#提供了多种风格的web编程,因为微软有自己的前端,所以集成了很多内容,不过基于现在编程前后端分离的模式,webapi是合适的。 webapi 目前网络上有很多介绍,不反复说这个了。在建立控制器时&…

前端渲染pdf文件解决方案-pdf.js

目录 一、前言 二、简介 1、pdf.js介绍 2、插件版本参数 三、通过viewer.html实现预览(推荐) 1、介绍 2、部署 【1】下载插件包 【2】客户端方式 【3】服务端方式(待验证) 3、使用方法 【1】预览PDF文件 【2】外部搜索…

从边缘到云端,如何通过时序数据库 TDengine 实现数据的全局洞

在当今数字化转型加速的背景下,海量的数据生成和实时处理需求已成为企业面临的关键挑战。无论是物联网设备、工业自动化系统,还是智能城市的各类传感器,数据的采集、传输与分析效率,直接影响企业的决策与运营。为此,TD…

2025.04.23【Treemap】树状图数据可视化指南

Multi-level treemap How to build a treemap with group and subgroups. Customization Customize treemap labels, borders, color palette and more 文章目录 Multi-level treemapCustomization Treemap 数据可视化指南Treemap 的基本概念为什么使用 TreemapTreemap 的应用…

蓝桥杯 15.小数第n位

小数第n位 原题目链接 题目描述 我们知道,整数做除法时,有时会得到有限小数,有时会得到无限循环小数。 如果我们把有限小数的末尾加上无限多个 0,它们就具有了统一的形式。 本题的任务是:在上述约定下&#xff0c…

用高斯溅射技术跨越机器人模拟与现实的鸿沟:SplatSim 框架解析

在机器人领域,让机器人在现实世界中精准执行任务是大家一直追求的目标。可模拟环境和现实世界之间存在着不小的差距,特别是基于 RGB 图像的操作策略,从模拟转移到现实时总是状况百出。 今天咱们就来聊聊 SplatSim 框架,看看它是怎…

AI大模型学习十一:‌尝鲜ubuntu 25.04 桌面版私有化sealos cloud + devbox+minio,实战运行成功

一、说明 用了ubuntu 25.04,内核为GNU/Linux 6.14.0-15-generic x86_64,升级了部分image,过程曲折啊 sealos 能干啥 对集群生命周期进行管理,一键安装高可用 Kubernetes 集群,增删节点清理集群自恢复等 通过 sealos…

如何在 Python 项目中引入 Rust 函数

目录 1. 初始化 Python 项目2. 添加 Rust 开发工具3. 初始化 Rust 项目4. 开发模式构建5. 验证模块是否成功安装6. 测试 Rust 函数总结 (封面pid: 129416070) Python 是一门非常流行的编程语言,具有易于使用和开发的特点。然而,随着项目需求的增长和性能…

聊聊SpringAI流式输出的底层实现?

在 Spring AI 中,流式输出(Streaming Output)是一种逐步返回 AI 模型生成结果的技术,允许服务器将响应内容分批次实时传输给客户端,而不是等待全部内容生成完毕后再一次性返回。 这种机制能显著提升用户体验&#xff…

MySQL 8 自动安装脚本(CentOS-7 系统)

文章目录 一、MySQL 8 自动安装脚本脚本说明📌 使用脚本前提条件1. 操作系统2. 用户权限3. 网络要求 📌 脚本的主要功能1. 环境检查2. MySQL 自动安装3. 自动配置 MySQL4. 防火墙配置5. 验证与输出 📌 适用场景 二、执行sh脚本1. 给予脚本执行…

在Notepad++中使用NppAtyle插件格式化代码

参考链接:Artistic Style 使用教程(中文版) 1.下载NppAStyle插件(根据版本,选择32位或者64位) https://github.com/ywx/NppAStyle/releases 2.菜单栏中选择:插件->打开插件文件夹 创建文件夹…

拼多多面经,暑期实习Java一面

项目中的设计模式 mysql连接过程,索引,分库分表场景,路由策略 redis使用场景,分片集群怎么搭建与路由,数据一致性 分布式锁怎么用的,具体使用参数 线程池怎么用的,过程 sql having 分布式事务 如…

FramePack:让视频生成更高效、更实用

想要掌握如何将大模型的力量发挥到极致吗?叶梓老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具(限时免费)。 1小时实战课程,您将学习到如何轻松上手并有效利用 Llama Factory 来微调您的模型,以发挥其…

ctfshow web8

前言 学习内容:简单的盲注脚本的书写 web8 这个题目题目手动注入很麻烦 主要是他过滤了 union 空格和 过滤了union的解决方法 1、使用盲注(报错注入和盲注) 2、使用时间盲注 3、堆叠注入 盲注脚本的书写 首先他是有注入点的 然后熟悉requests包的使用 …

gem5-gpu教程03 当前的gem5-gpu软件架构(因为涉及太多专业名词所以用英语表达)

Current gem5-gpu Software Architecture 这是当前gem5-gpu软件架构的示意图。 Ruby是在gem5-gpu上下文中用于处理CPU和GPU之间内存访问的高度可配置的内存系统 CudaCore (src/gpu/gpgpu-sim/cuda_core.*, src/gpu/gpgpu-sim/CudaCore.py) Wrapper for GPGPU-Sim shader_cor…

TDengine 查询引擎设计

简介 TDengine 作为一个高性能的时序大数据平台,其查询与计算功能是核心组件之一。该平台提供了丰富的查询处理功能,不仅包括常规的聚合查询,还涵盖了时序数据的窗口查询、统计聚合等高级功能。这些查询计算任务需要 taosc、vnode、qnode 和…