华为OD机试真题 Python 实现【天然蓄水池】【2023Q1 200分】,附详细解题思路

news/2024/11/20 9:24:04/

在这里插入图片描述

一、题目描述

公元2919年,人类终于发现了一颗宜居星球——X星。现想在X星一片连绵起伏的山脉间建一个天然蓄水库,如何选取水库边界,使蓄水量最大?

要求:

山脉用正整数数组s表示,每个元素代表山脉的高度。

选取山脉上两个点作为蓄水库的边界,则边界内的区域可以蓄水,蓄水量需排除山脉占用的空间。

蓄水量的高度为两边界的最小值。

如果出现多个满足条件的边界,应选取距离最近的一组边界。

输出边界下标(从0开始)和最大蓄水量;如果无法蓄水,则返回0,此时不返回边界。

例如,当山脉为s = [3, 1, 2]时,则选取s[0]和s[2]作为水库边界,则蓄水量为1,此时输出:0 2:1
当山脉`s = [3, 2, 1]时,不存在合理的边界,此时输出:0。

二、输入描述

一行正整数,用空格隔开,例如输入
1 2 3
表示 s = [1, 2, 3]

三、输出描述

当存在合理的水库边界时,输出左边界、空格、右边界、英文冒号、蓄水量;例如
0 2:1
当不存在合理的水库边界时,输出 0;例如
0

四、补充说明

数组s满足:
1 <= length(s) <= 10000
0 <= s[i] <= 10000

五、解题思路

  1. 读取输入的山脉数组s。
  2. 初始化左边界l、右边界r和最大蓄水量max为0。
  3. 使用两个指针m和n分别指向山脉数组的第一个和最后一个元素。
  4. 遍历山脉数组,从m=0到n-1:
    • 如果当前山脉高度小于等于下一个山脉高度(升序),则跳过当前山脉,继续下一轮循环。
    • 否则,使用一个新的指针i从m+2到n,遍历右边界:
      • 如果当前山脉高度大于等于前一个山脉高度(降序),则跳过当前山脉,继续下一轮循环。
      • 否则,计算当前左边界和右边界之间的蓄水量:
        • 获取左边界和右边界之间的高度h,即左边界和右边界中较小的山脉高度。
        • 使用流处理左边界和右边界之间的山脉高度,过滤出高度小于h的山脉,计算蓄水量(h - num)并求和。
        • 如果蓄水量大于已有的最大蓄水量max,则更新左边界l、右边界r和最大蓄水量max。
  5. 输出最大蓄水量和边界信息:
    • 如果最大蓄水量大于0,则输出左边界l、右边界r和最大蓄水量max。
    • 否则,输出0表示无法蓄水。

六、Python算法源码

def calculate_max_reservoir(arr):l = 0r = 0max_reservoir = 0n = len(arr)for m in range(n - 1):if arr[m] <= arr[m + 1]:continuefor i in range(m + 2, n):if arr[i - 1] >= arr[i]:continueh = min(arr[m], arr[i])total = sum(h - num for num in arr[m + 1:i] if num < h)if total > max_reservoir:l = mr = imax_reservoir = totalreturn f"{l} {r}:{max_reservoir}" if max_reservoir > 0 else "0"

七、效果展示

1、输入

1 9 6 2 5 4 9 3 7

2、输出

1 6:19

3、说明

经过分析,选取s[1]和s[6]时,水库蓄水量为19(3 + 7 + 4 + 5)。

在这里插入图片描述



🏆下一篇:华为OD机试真题 Python 实现【相对开音节】【2022Q4 100分】,附详细解题思路

🏆本文收录于,华为OD机试(Python)真题(A卷+B卷)

每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述


http://www.ppmy.cn/news/625021.html

相关文章

Angular 与 PDF之五 实现方式的选择与扩展

在纯web的前提下&#xff08;不考虑移动端native&#xff09;&#xff0c;PDF的功能基本包括&#xff1a; 客户端PDF&#xff1a;最简单的场景&#xff0c;实现方式也很多&#xff0c;基本不需要有什么顾虑的地方&#xff0c;简单的实现可以参考系列第一篇文章。客户端PDF预览&…

三星s换机助手电脑复原不了,急!!

前几天升级手机系统用这个三星换机助手备份本来备份c盘但是最后c盘空间不够了&#xff0c;改成了d盘 改了之后发现c盘的备份文件复原不了了 我就去找到当天的文件改回去但是它让选择别的文件夹 有没有那个好兄弟知道的帮我一下求求了里面有些东西挺重要的

智能相机的功能介绍

智能视觉检测相机主要是应用在工业检测领域图像分析识别、视觉检测判断。相机具有颜色有无判别、颜色面积计算、轮廓查找定位、物体特征灰度匹配、颜色或灰度浓淡检测、物体计数、尺寸测量、条码二维码识别读取、尺寸测量、机械收引导定位、字符识别等功能。相机带有HDMI高清视…

不只是5G手机 三星电子称其还向韩国提供了超过5.3万个5G基站

【TechWeb】4月11日消息&#xff0c;据国外媒体报道&#xff0c;作为韩国最大的电子工业企业&#xff0c;三星电子的电子产品和电信设备在韩国乃至全球都有大量的用户&#xff0c;在目前大热的5G方面也是如此。 韩国三大电信运营商已在4月3日面向消费者推出了5G商用服务&#x…

Galaxy Fold折叠屏手机故障暴露三星内部管理问题

在三星Galaxy Fold折叠屏手机即将在北美发售之际&#xff0c;提前拿到评测机的媒体发布消息称&#xff0c;该机在实测中故障频出、软硬件两方面都问题多多。 最新消息则显示&#xff0c;三星中国方面已取消Galaxy Fold折叠屏手机原定于4月25日在上海举行的中国区发布会。官方给…

三星电子125国一同出售Galaxy S5 创纪录

据韩国《世界日报》4月11日报导&#xff0c;三星电子11日表明&#xff0c;当天将在美国、英国、中国和俄罗斯等125个国家一同出售新一代智能手机Galaxy S5。 这是三星电子手机同步上市国家最多的一次。 三星电子方案到5月在150余国经过350多家移动运营商相继出售这款商品。Gala…

三星大中华区总裁称Galaxy S III提前至4月份发布

三星大中华区总裁Kim Young-Ha今日表示&#xff0c;三星的下一代Android旗舰手机Galaxy S III将提前一个月上市&#xff0c;从原来的5月份提前至4月份。此前三星曾否认将在4月份推出Galaxy S II的下一代。 Kim Young-Ha向北京新闻界提到三星海外战略&#xff0c;他表示在战略上…

spice-gtk键盘灯的控制

1、控制键盘灯入口 1.1、SPICE服务器通过信号" inputs-modifiers"改变键盘灯 static void guest_modifiers_changed(SpiceInputsChannel *inputs, gpointer data)//信号改变键盘灯 {SpiceGtkSession *self data;spice_gtk_session_sync_keyboard_modifiers_for_chan…