当前位置: 首页 > news >正文

458. 可怜的小猪

可怜的小猪

  • 题目描述
  • 尝试做法
  • 题目理解

题目描述

有 buckets 桶液体,其中 正好有一桶 含有毒药,其余装的都是水。它们从外观看起来都一样。为了弄清楚哪只水桶含有毒药,你可以喂一些猪喝,通过观察猪是否会死进行判断。不幸的是,你只有 minutesToTest 分钟时间来确定哪桶液体是有毒的。

喂猪的规则如下:

选择若干活猪进行喂养
可以允许小猪同时饮用任意数量的桶中的水,并且该过程不需要时间。
小猪喝完水后,必须有 minutesToDie 分钟的冷却时间。在这段时间里,你只能观察,而不允许继续喂猪。
过了 minutesToDie 分钟后,所有喝到毒药的猪都会死去,其他所有猪都会活下来。
重复这一过程,直到时间用完。
给你桶的数目 buckets ,minutesToDie 和 minutesToTest ,返回 在规定时间内判断哪个桶有毒所需的 最小 猪数 。

示例 1:

输入:buckets = 1000, minutesToDie = 15, minutesToTest = 60
输出:5
示例 2:

输入:buckets = 4, minutesToDie = 15, minutesToTest = 15
输出:2
示例 3:

输入:buckets = 4, minutesToDie = 15, minutesToTest = 30
输出:2

提示:

1 <= buckets <= 1000
1 <= minutesToDie <= minutesToTest <= 100

尝试做法

class Solution {
    public int poorPigs(int buckets, int minutesToDie, int minutesToTest) {
        int times = minutesToTest/minutesToDie,ans = 0;
        while(Math.pow(times + 1, ans) < buckets) ++ans;
        return ans;
    }
}

实话实说,看了提示(Find minimum x such that (T+1)^x >= N)才做出来的。
最开始用Math.log时,发现log125 / log5没有通过,应该是小数精确度的问题。

题目理解

这里贴一下题目的一种理解方式

一只小猪代表一个维度(设为n), 每只小猪可以测试的次数+1为这只小猪在本维度上可以确定的点的数量(设为s),
则组成的n维空间中的总的点的数量为 s^n .

小猪喝水策略: 把所有的水桶排成一个n维的n方体, 每只小猪喝垂直于本维度(轴)的一个"超平面".

如2只小猪, 5个点. 25桶水排成一个矩形, 一只喝行, 一只喝列. 2只小猪确定一个点(***).

如3只小猪, 5个点. 125桶水排成一个立方体, 一只喝垂直于x轴的面, 一只喝垂直于y轴的面, 一只喝垂直于z轴的面.
3只小猪确定一个点(***).

如n只小猪, 5个点. 5^n桶水排成一个n方体, 每只喝垂直于本维度的一个"超平面"上的所有的水.
n只小猪确定n维空间中的一个点(***).
引用自https://leetcode.cn/problems/poor-pigs/solutions/15770/hua-jie-suan-fa-458-ke-lian-de-xiao-zhu-by-guanpen/comments/905588/

相关文章:

  • iOS安全和逆向系列教程 第3篇:搭建iOS逆向开发环境 (上) - 工具链与基础配置
  • 力扣HOT100之哈希:1. 两数之和
  • 笔记:代码随想录算法训练营第35天: 01背包问题 二维、 01背包问题 一维 、LeetCode416. 分割等和子集
  • [杂学笔记]HTTP1.0和HTTP1.1区别、socket系列接口与TCP协议、传输长数据的时候考虑网络问题、慢查询如何优化、C++的垃圾回收机制
  • Echarts在resize时报错
  • 面试-----每日一题
  • 【RabbitMQ】RabbitMQ的核心概念与七大工作模式
  • STM32MP1xx的启动流程
  • sqlite3 c++ client选择; c++环境搭建 : abseil-cpp | fnc12/sqlite_orm
  • 基于深度学习的静态图像穿搭美学评估与优化建议系统的基本实现思路及示例代码
  • 微服务组件详解——sentinel
  • js之原型及原型链
  • Linux之环境变量(超详细版)
  • 计算机毕业设计SpringBoot+Vue.js党员教育管理系统(源码+文档+PPT+讲解)
  • vue3之echarts仪表盘
  • JavaScript+vue 实现复制文字功能
  • Linux·数据库INSERT优化
  • 【MySQL、Oracle、SQLserver、postgresql】查询多条数据合并成一行
  • SpaCy处理NLP的详细工作原理及工作原理框图
  • Flutter 学习之旅 之 flutter 使用 carousel_slider 简单实现轮播图效果
  • 哪款地图可以看到实时街景/合肥seo公司
  • jsp企业网站源码/网络工程师
  • 北京 外贸网站建设/能打开的a站
  • 做食品网站有哪些东西/企业网站策划
  • 西宁制作网站多少钱/长沙网站优化排名推广
  • 免费做app和网站的平台有哪些/西安seo和网络推广