【LeetCode每日一题:799.香槟塔~~~模拟】

news2025/1/15 13:50:41

题目描述

我们把玻璃杯摆成金字塔的形状,其中 第一层 有 1 个玻璃杯, 第二层 有 2 个,依次类推到第 100 层,每个玻璃杯 (250ml) 将盛有香槟。

从顶层的第一个玻璃杯开始倾倒一些香槟,当顶层的杯子满了,任何溢出的香槟都会立刻等流量的流向左右两侧的玻璃杯。当左右两边的杯子也满了,就会等流量的流向它们左右两边的杯子,依次类推。(当最底层的玻璃杯满了,香槟会流到地板上)

例如,在倾倒一杯香槟后,最顶层的玻璃杯满了。倾倒了两杯香槟后,第二层的两个玻璃杯各自盛放一半的香槟。在倒三杯香槟后,第二层的香槟满了 - 此时总共有三个满的玻璃杯。在倒第四杯后,第三层中间的玻璃杯盛放了一半的香槟,他两边的玻璃杯各自盛放了四分之一的香槟,如下图所示。
在这里插入图片描述

现在当倾倒了非负整数杯香槟后,返回第 i 行 j 个玻璃杯所盛放的香槟占玻璃杯容积的比例( i 和 j 都从0开始)。

示例 1:
输入: poured(倾倒香槟总杯数) = 1, query_glass(杯子的位置数) = 1, query_row(行数) = 1
输出: 0.00000
解释: 我们在顶层(下标是(0,0))倒了一杯香槟后,没有溢出,因此所有在顶层以下的玻璃杯都是空的。

示例 2:
输入: poured(倾倒香槟总杯数) = 2, query_glass(杯子的位置数) = 1, query_row(行数) = 1
输出: 0.50000
解释: 我们在顶层(下标是(0,0)倒了两杯香槟后,有一杯量的香槟将从顶层溢出,位于(1,0)的玻璃杯和(1,1)的玻璃杯平分了这一杯香槟,所以每个玻璃杯有一半的香槟。
示例 3:

输入: poured = 100000009, query_row = 33, query_glass = 17
输出: 1.00000

提示:

0 <= poured <= 109
0 <= query_glass <= query_row < 100

求解思路

  1. 模拟:每一层的首尾两个杯子只接收到斜上方杯子溢出的一半,其余的杯子是接收到头顶两个杯子各自溢出的一半之和

实现代码

class Solution {
    public double champagneTower(int poured, int query_row, int query_glass) {
        //记录一行的结果即可
        double count[]=new double[]{(double)poured};
        for(int i=1;i<=query_row;i++){
            //计算每一行的结果
            double arr[]=new double[i+1];
            //行起始位置
            arr[0]=Math.max(0,count[0]-1)/2;
            //行结束位置
            arr[i]=Math.max(0,count[i-1]-1)/2;
            //中间位置求解
            for(int j=1;j<i;j++){
                arr[j]=(Math.max(0,count[j-1]-1)+Math.max(0,count[j]-1))/2;
            }
            //更新每一行的结果
            count=arr;
        }
        //返回最后指定的位置
        return Math.min(1,count[query_glass]);
    }
}

运行结果

在这里插入图片描述

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

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

相关文章

〖全域运营实战白宝书 - 运营角色认知篇①〗- 初识运营,明晰运营的学习路径

✌ 大家好&#xff0c;我是 哈士奇 &#xff0c;一位工作了十年的"技术圈混子"&#xff0c; 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 ✌ &#x1f4ac; 人生格言&#xff1a;优于别人,并不高贵,真正的高贵应该是优于过去的自己。&#x1f4ac; &am…

ES6 入门教程 14 Set 和 Map 数据结构 14.1 Set

ES6 入门教程 ECMAScript 6 入门 作者&#xff1a;阮一峰 本文仅用于学习记录&#xff0c;不存在任何商业用途&#xff0c;如侵删 文章目录ES6 入门教程14 Set 和 Map 数据结构14.1 Set14.1.1 基本用法14.1.2 Set 实例的属性和方法14.1.3 遍历操作14 Set 和 Map 数据结构 14.1…

[附源码]java毕业设计实验教学过程管理平台

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【龙芯1B】:74HC595数码管或74HC138数码管程序开发

学习目标&#xff1a;解决龙芯1B&#xff1a;74HC595或74HC138数码管显示问题 首先我们要知道数码管的原理&#xff1b;以74HC595为例&#xff0c;74HC595是具有三态输出功能&#xff08;即具有高电平、低电平和高阻抗三种输出状态&#xff09;的门电路。输出寄存器可以直接清除…

基于Springboot搭建java项目(十六)——Kafka的简介

kafka官网&#xff1a;http://kafka.apache.org/ 参考文献&#xff1a;大白话 kafka 架构原理 (qq.com) 一、kafka简介 Kafka最初由Linkedin公司开发&#xff0c;是一个分布式的、分区的、多副本的、多订阅者&#xff0c;基于zookeeper协调的分布式日志系统&#xff08;也可…

[附源码]计算机毕业设计JAVA后疫情下物业管理系统

[附源码]计算机毕业设计JAVA后疫情下物业管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM my…

数据传输功能单元——DID参数定义

诊断协议那些事儿 诊断协议那些事儿专栏系列文章&#xff0c;本文介绍数据传输服务的dataldentifier&#xff08;DID&#xff09;定义。 参考文章&#xff1a; 22服务-ReadDataByIdentifier 文章目录诊断协议那些事儿一、DID参数二、参数的定义总结一、DID参数 逻辑上&#…

MongoDB初识(一)

什么是MongoDB MongoDB 是一个以JSON为数据模型的文档数据库&#xff0c;文档来自于“JSON Document”&#xff0c;并非我们一般理解的PDF&#xff0c;WORD文档 MongoDB中的记录就是一个文档&#xff0c;它是由键值对组成的数据结构。MongoDB 文档类似于 JSON 对象。字段的值…

基于农产品(蔬菜)数据挖掘的分析与实现(Python+Spider)

目 录 摘 要 I Abstract II 1绪论 1 1.1研究背景 1 1.2项目来源 1 1.3研究目的 2 1.3研究现状 2 1.4主要内容及预期目标 3 1.4.1数据挖掘技术简述及优点 3 1.4.2程序设计思路 3 1.4.3节点布置方案 4 1.4.4预期目标 5 2农产品&#xff08;蔬菜&#xff09;价格形成机制及影响因素…

少儿编程 电子学会图形化 scratch编程等级考试四级真题答案解析(选择题)2022年9月

2022年9月Scratch四级真题解析 选择题(共15题,每题2分,共30分) 1、运行下列程序,说法正确的是 A、列表中的数字全部小于11 B、列表的长度为10 C、变量i最终值为20 D、列表中有大于10的数字 答案:D 考点分析:考查积木综合使用,重点考查列表积木的使用,开始向列表…

4.1.2 类非静态成员函数返回值转换与NRV优化

类非静态成员函数返回值转换与NRV优化 下述代码即是Point3d的整体函数原型&#xff0c;对于第33行的调用&#xff0c;正常理解即会首先调用默认构造函数生成一个临时对象&#xff0c;进而调用拷贝构造函数将临时对象拷贝给p2。但是实际上任何编译器都不会采用上述的调用方法&a…

四十七、Fluent近壁面处理

0. 前言 今天这篇文章&#xff0c;我们介绍一下近壁面处理的方式来求解湍流壁面物理规律。 前文四十五、四十六及本文四十七这三篇文章可以说是非常详细而系统的把壁面函数及相关理论全都介绍了一遍&#xff0c;大家可以参考进行设置。也希望大家能多多转发&#xff0c;点赞呀&…

MySQL中的锁机制、MyISAM表锁、MyISAM表级锁争用情况、MyISAM并发插入Concurrent Inserts、MyISAM的锁调度

前言: 关于读锁、写锁、乐观锁、悲观锁、行锁、表锁的理解可以看看以前我写的: 读锁、写锁、乐观锁、悲观锁、行锁、表锁 内部锁:在MySQL服务器内部执行的锁,以管理多个会话对表内容的争用。这种类型的锁是内部的,因为它完全由MySQL服务器执行,不涉及其他程序。 表级锁:…

JAVA中使用最广泛的本地缓存?Ehcache的自信从何而来 —— 感受来自Ehcache的强大实力

大家好&#xff0c;又见面了。 作为《深入理解缓存原理与实战设计》系列专栏&#xff0c;前面几篇文章中我们详细的介绍与探讨了Guava Cache与Caffeine的实现、特性与使用方式。提到JAVA本地缓存框架&#xff0c;还有一个同样无法被忽视的强大存在 —— Ehcache&#xff01;它…

Windows同时安装两个版本JDK,并实现动态切换JAVA8或者JAVA11

一、需求 对于Java开发工程师来说&#xff0c;可能手头上同时负责不同的项目&#xff0c;但是由于历史的原因&#xff0c;Java版本可能没有做到统一升级&#xff0c;有的项目是使用JDK8版本&#xff0c;有的项目使用的是JDK11的版本&#xff0c;那这时候就需要我们电脑同时兼容…

html2canvas 行内元素边框样式生成问题解决(根据文字生成图片)

项目场景&#xff1a; 实现一个基于一段文字生成一张图片的需求&#xff0c;其中&#xff0c;有一段文字需要下划线&#xff0c;但是不是text-decoration:underline;的样式&#xff0c;因为下划线要距离字一段距离&#xff0c;接到这个方案时&#xff0c;第一时间想到的就是ht…

在x86的Docker中构建TVM的ARM环境

文章目录前言1. 加载arm-ubuntu镜像2. 安装acl库3. 编译arm运行时4. 编译在x86运行在arm4.1 在x86的环境中构建arm的编译环境4.2 测试x86-ubuntu与arm-ubuntu能否ping通4.3 调用RPC4.4 ACL的使用5. arm版的tvm编译和运行时环境5.1 构建arm版的tvm编译和运行时环境5.2 关于ubunt…

卷积版wav to image 训练实例

🍿*★,*:.☆欢迎您/$:*.★* 🍿 目录 背景 正文 总结 背景描述

Java语言知识大盘点(期末总复习)二

&#x1f339;作者:云小逸 &#x1f4dd;个人主页:云小逸的主页 &#x1f4dd;Github:云小逸的Github &#x1f91f;motto:要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前…

2022年珠海市第三届半导体行业集成电路测试工竞赛成功举办

11月19日&#xff0c;2022年珠海市第三届职业技能大赛暨香洲区第七届“香洲工匠”职业技能竞赛半导体行业集成电路测试工竞赛在珠海这片创新热土上成功举办&#xff0c;48支集成电路高素质技能人才队伍齐聚香江&#xff0c;同台竞技&#xff0c;碰撞出绚烂的“芯”火花。 香洲区…