LeetCode 755. 倒水(模拟)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给出一个地形高度图, heights[i] 表示该索引处的高度。
每个索引的宽度为 1。在 V 个单位的水落在索引 K 处以后,每个索引位置有多少水?

水最先会在索引 K 处下降并且落在该索引位置的最高地形或水面之上。然后按如下方式流动:

  • 如果液滴最终可以通过向左流动而下降,则向左流动。
  • 否则,如果液滴最终可以通过向右流动而下降,则向右流动。
  • 否则,在当前的位置上升。
  • 这里,“最终下降” 的意思是液滴如果按此方向移动的话,最终可以下降到一个较低的水平。而且,“水平”的意思是当前列的地形的高度加上水的高度。

我们可以假定在数组两侧的边界外有无限高的地形。而且,不能有部分水在多于 1 个的网格块上均匀分布 - 每个单位的水必须要位于一个块中。

示例 1:
输入:heights = [2,1,1,2,1,2,2], V = 4, K = 3
输出:[2,2,2,3,2,2,2]
解释:
#       #
#       #
##  # ###
#########0123456    <- 索引第一个水滴降落在索引 K = 3 上:#       #
#   w   #
##  # ###
#########0123456    当向左或向右移动时,水可以移动到相同或更低的高度。When moving left or right, the water can only move to the same level or a lower level.
(从水平上看,意思是该列的地形高度加上水的高度)
由于向左移动可以最终下落,因此向左移动。
(一个水滴 “下落” 的意思是可以相比之前可以进入更低的高度)#       #
#       #
## w# ###
#########0123456    由于向左移动不会使其降落,所以停在该位置上。下一个水滴下落:#       #
#   w   #
## w# ###
#########0123456  由于新水滴向左移动可以最终下落,因此向左移动。
注意水滴仍然是优先选择向左移动,
尽管可以向右移动(而且向右移动可以下落更快)#       #
#  w    #
## w# ###
#########0123456  #       #
#       #
##ww# ###
#########0123456  经过刚才的阶段后,第三个水滴下落。
由于向左移动不会最终下落,因此尝试向右移动。
由于向右移动可以最终下落,因此向右移动。#       #
#   w   #
##ww# ###
#########0123456  #       #
#       #
##ww#w###
#########0123456  最终,第四个水滴下落。
由于向左移动不会最终下落,因此尝试向右移动。
由于向右移动不会最终下落,因此停在当前位置:#       #
#   w   #
##ww#w###
#########0123456  最终的答案为 [2,2,2,3,2,2,2]:#    ####### ####### 0123456 示例 2:
输入:heights = [1,2,3,4], V = 2, K = 2
输出:[2,3,3,4]
解释:
最后的水滴落在索引 1 位置,因为继续向左移动不会使其下降到更低的高度。示例 3:
输入:heights = [3,1,3], V = 5, K = 1
输出:[4,4,4]注:
heights 的长度为 [1, 100] ,并且每个数的范围为[0, 99]。
V 的范围 [0, 2000]。
K 的范围 [0, heights.length - 1]

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/pour-water
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

class Solution {
public:vector<int> pourWater(vector<int>& heights, int V, int K) {int l = K, r = K, n = heights.size();while(V)//还有水{l = K;while(l >= 1 && heights[l-1] <= heights[l])//左边有更低的l--;while(l < K && heights[l] == heights[l+1])//一样高,靠近k处l++;if(l != K){heights[l]++;V--;continue;}r = K;while(r <= n-2 && heights[r] >= heights[r+1])//右边有更低的r++;while(r > K && heights[r-1] == heights[r])r--;heights[r]++;//r==K的情况合并了V--;}return heights;}
};

4 ms 7.2 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

python中的self含义及使用方法

self # 定义一个类 class Animal: # 方法 def __init__(self, name): self.name name def printName(self): print(名字为:%s%self.name) # 定义一个函数 def myPrint(animal): animal.printName() dog1 Animal(西西) myPrint(…

Galaxy s4怎么安装一个预装软件的签名不一致的新版本

公司新买一台galaxy s4&#xff0c;要测试一个软件。但是该软件在s4上面已经有预装版本了&#xff0c;无法安装。 用了下列方法才安装成功&#xff1a; 1. 请卖手机的帮忙获得root权限。 2. 检查s4是否已经root, 在手机上安装360安全卫士。然里面有工具->一键root&#xff0…

win10计算机修改底色,win10电脑如何修改登陆背景

win10中如何修改登陆时的背景图片&#xff1f;在win10中登陆界面的图片总是只有那几个背景图片&#xff0c;那登陆界面的背景图片能够更换么&#xff0c;答案是肯定的&#xff0c;下面小编就详细的给大家介绍一下背景更换的问题&#xff0c;希望能够帮助到大家。win10中更换登陆…

LeetCode 444. 序列重建(拓扑排序)

文章目录1. 题目2. 解题1. 题目 验证原始的序列 org 是否可以从序列集 seqs 中唯一地重建。 序列 org 是 1 到 n 整数的排列&#xff0c;其中 1 ≤ n ≤ 104。 重建是指在序列集 seqs 中构建最短的公共超序列。&#xff08;即使得所有 seqs 中的序列都是该最短序列的子序列&am…

python中的保护对象数据

保护对象数据 查看过着修改对象的属性&#xff08;数据&#xff09;&#xff0c;有2种方法。 直接通过对象名修改 通过方法间接修改 Python中没有像C中public和private这些关键字来区别公有属性和私有属性。它是以属性命名方式来区分&#xff0c;如果在属性名前面加了2个下划…

Highcharts 本地导出图片 Java

下载的 Highcharts-2.3.5.zip 解压后 有 E:\Highcharts\Highcharts-2.3.5\exporting-server\java 目录 提供了Java实现的导出应用。 1&#xff09;安装maven&#xff0c;配置环境变量. &#xff08;http://maven.apache.org/download.cgi&#xff09; 1.jdk 我装的是E:\java\j…

华硕主板如何用u盘启动计算机,华硕主板怎么设置u盘启动都有哪些方法

随着互联网的不断发展&#xff0c;现在使用电脑的机会越来越多了。但是机器难免出故障&#xff0c;或者对于新的电脑需要设置启动。那么华硕主板怎么设置u盘启动。下面由一键工作室介绍一下。华硕主板怎么设置u盘启动华硕主板怎么设置u盘启动 华硕主板设置u盘启动方法1、首先&a…

LeetCode 353. 贪吃蛇(deque+set)

文章目录1. 题目2. 解题1. 题目 请你设计一个 贪吃蛇游戏&#xff0c;该游戏将会在一个 屏幕尺寸 宽度 x 高度 的屏幕上运行。 起初时&#xff0c;蛇在左上角的 (0, 0) 位置&#xff0c;身体长度为 1 个单位。 你将会被给出一个 (行, 列) 形式的食物位置序列。当蛇吃到食物…

python中__del__使用方法

创建对象后&#xff0c;python解释器默认调用__init__()方法。当删除一个对象时&#xff0c;python解释器也会默认调用一个方法&#xff0c;这个方法为__del__()方法。在python中&#xff0c;对于开发者来说很少会直接销毁对象(如果需要&#xff0c;应该使用del关键字销毁)。Py…

html中post和get区别

HTTP协议中的GET和POST方法——二者主要区别如下&#xff1a; 1. get是从服务器上获取数据&#xff0c;post是向服务器传送数据。2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中&#xff0c;值和表单内各个字段一一对应&#xff0c;在URL中可以看到。post是通过HT…

计算机简单故障时的排除方法,电脑简单故障排除解决办法大全

电脑简单故障排除解决办法大全一、电脑罢 工了?听报警声就可以处理故障!在使用电脑的时候&#xff0c;我们会经常遇到开机时电脑黑屏没有反应的情况&#xff0c;普通的电脑用户而对这样的故障实在是无从下手&#xff0c;但是一般电脑会有一个内部自检的功能&#xff0c;如果检…

LeetCode MySQL 1543. Fix Product Name Format(trim去空格+upper/lower大小写)

文章目录1. 题目2. 解题1. 题目 Table: Sales ----------------------- | Column Name | Type | ----------------------- | sale_id | int | | product_name | varchar | | sale_date | date | ----------------------- sale_id is the primary key for …

云计算之路-阿里云上:拔云见日的那一刻,热泪盈眶

当用路过秋天的压力测试工具重现问题的那一刻&#xff0c;热泪盈眶&#xff01;这段时间所承受的一切一涌而出。。。 下面这张图是首次压力测试重现问题时的Windows性能监视器截图&#xff0c;我们对这样的图太熟悉了&#xff0c;当它一出现&#xff0c;就知道问题重现了。红色…

科润酒吧点单系统服务器配置,那些牛逼的酒吧都用什么管理系统?

原标题&#xff1a;那些牛逼的酒吧都用什么管理系统&#xff1f;关于酒吧你是熟悉还是陌生&#xff1f;对酒吧的管理系统&#xff1f;你接触的都有哪些&#xff1f;今天分享一个超大型酒吧的系统解决方案。宁波最大酒吧S86正式营业&#xff0c;视易娱加管理系统助力场所运营&am…

LeetCode 第 32 场双周赛(983/2957,前33.2%)

文章目录1. 比赛结果2. 题目1. LeetCode 5468. 第 k 个缺失的正整数 easy2. LeetCode 5469. K 次操作转变字符串 medium3. LeetCode 5470. 平衡括号字符串的最少插入次数 medium4. LeetCode 5485. 找出最长的超赞子字符串 hard1. 比赛结果 两题选手报道&#xff0c;继续加油&a…

python中的类属性和实例属性

类属性和实例属性&#xff0c;一般我们接触到的就是实例属性&#xff08;对象属性&#xff09;&#xff0c;顾名思义&#xff0c; # 实例属性是对象持有的&#xff0c;不是共享的属性 # 实例属性只有对象能够访问 类属性就是类对象所拥有的属性&#xff0c;它被所有类对象的实…

图片网站用什么服务器好,网站图片与框架放在不同服务器有哪些优缺点

如今很多企业线上发展迅速&#xff0c;对网站的要求也越来越高&#xff0c;因此出现分离式网站架构。怎样理解分离式网站架构呢&#xff1f;理解最简单的一种&#xff0c;即将图片与网站架构分开存放。的确&#xff0c;现在很多企业都采取这样的操作模式&#xff0c;也有可能成…

迭代器是神马东西

一、迭代器用来干嘛的&#xff1f; 本质是指针&#xff0c;用来遍历访问容器中元素的。 STL实现了容器和算法的分离&#xff0c;如何实现的呢&#xff0c;答曰用类模板和函数模板&#xff0c;也可理解为所谓的泛化。那么容器和算法又是怎样结合在一起的呢&#xff0c;答曰迭代器…

python中的类方法和静态方法

类可以有类属性&#xff0c;也可以有类方法&#xff0c;类方法主要是对类属性的封装。是类对象所拥有的方法&#xff0c;需要用修饰器classmethod来标识其为类方法&#xff0c;对于类方法&#xff0c;第一个参数必须是类对象&#xff0c;一般以cls作为第一个参数&#xff08;当…

LeetCode 第 201 场周赛(304/5614,前5.42%)

文章目录1. 比赛结果2. 题目1. LeetCode 5483. 整理字符串 easy2. LeetCode 5484. 找出第 N 个二进制字符串中的第 K 位 medium3. LeetCode 5471. 和为目标值的最大数目不重叠非空子数组数目 medium4. LeetCode 5486. 切棍子的最小成本 hard1. 比赛结果 做出来3题&#xff0c;…