Python 解决方案:Largest Rectangle Hackerrank2024 年 8 月 29 日 | 4 分钟阅读 Hackerrank 是一个流行的在线编程挑战平台,其中最受欢迎的问题之一是“最大矩形”问题。此问题要求您在给定的直方图中找到最大的矩形面积。在本文中,我们将通过 Python 中的此问题解决方案进行讲解。 问题陈述您将获得一个表示直方图高度的高度列表。您的任务是找到直方图中最大的矩形面积。每个矩形的宽度视为1,相应直方图条的高度给出高度。 解决方案为了解决这个问题,我们可以使用堆栈数据结构。我们开始初始化一个空堆栈,并遍历高度列表。对于每个高度,我们执行以下步骤:
示例让我们看看这个解决方案在 Python 代码中是什么样的 在此代码中,我们初始化一个空堆栈和一个用于存储最大面积的变量。之后,我们使用 while 循环遍历高度列表。在循环中,我们检查堆栈是否为空,或者当前高度是否大于或等于堆栈顶部的高度。如果其中任一条件为真,我们将当前索引压入堆栈并将i增加1。 如果当前高度小于堆栈顶部的高度,我们弹出堆栈中的顶部索引,并计算由弹出索引处的高度和当前索引形成的矩形的面积。我们使用公式(i - stack[-1] - 1) * h[top]来计算面积,其中i是当前索引,stack[-1]是堆栈顶部的索引,h[top]是弹出索引处的高度。 我们重复步骤 2,直到堆栈顶部的高度小于或等于当前高度。对于每个弹出的索引,我们将矩形的面积计算为(i - stack[-1] - 1) * h[top]。如果堆栈为空,我们将使用公式i * h[top]。 让我们在示例输入上测试我们的解决方案 输出 12 在这里,我们有一个直方图,其高度为 [6, 2, 5, 4, 5, 1, 6]。该直方图中最大的矩形高度为4,宽度为3,因此其面积为12。我们的函数正确地返回12作为输出。 结论总之,我们已经看到了如何使用 Python 中的堆栈数据结构解决 Hackerrank 上的“最大矩形”问题。此问题是如何有效地使用堆栈数据结构解决复杂问题的一个很好的例子。关键的见解是,我们可以使用堆栈来跟踪直方图中形成递增高度矩形的条的索引。通过这样做,我们可以避免计算我们知道会小于我们迄今为止找到的最大面积的面积。 |
PyGTK 是 GTK+ (GIMP Toolkit) 图形用户界面库的 Python 绑定。它提供了一套强大而灵活的工具,用于为桌面应用程序创建跨平台图形用户界面 (GUI)。在本文中,我们将探讨 PyGTK 的特性以及如何...
5 分钟阅读
在本教程中,我们将讨论 Python 中的带参数的装饰器,但在开始此主题之前,用户必须学习 Python 中的装饰器、函数装饰器。装饰器是 Python 中一个非常强大且有用的工具,因为它可以让用户修改函数或类的行为。Python 函数...
5 分钟阅读
我们在处理各种应用程序和网站上的各种任务时,都看到过各种消息框。这些消息框有不同的类型,如警报消息框、确认消息框、密码消息框以及许多其他类型。这些不同类型的消息框...
7 分钟阅读
本教程将展示如何利用Python机器学习模型,使用Sklearn的预测函数来预测结果。我们将简要总结该函数的功能,回顾其语法,然后提供使用此方法与各种机器学习模型的示例。简要概述...
5 分钟阅读
获得清洁的饮用水是每个人最基本的需求之一。从法律上讲,获得清洁的饮用水是一项基本人权。水质受多种因素影响,并且是机器学习研究的主要课题之一……
阅读 13 分钟
对象检测 它是计算机视觉中分类和识别视频或图像中对象的任务。这种对象检测算法主要分为两种类型。它们是: 单阶段检测器 两阶段检测器 单阶段检测器 您只需在单阶段检测器中查看一次,该检测器使用完整的 CNN 来处理……
阅读 4 分钟
如今,许多希望成为 Python 开发人员的人都知道 Python 的语言结构。由于网上有大量的教程。有些人对制作项目一无所知。如果你也是其中之一,...
阅读 10 分钟
栈是遵循后进先出 (LIFO) 原则的线性数据结构,该原则规定最新添加的项是第一个被删除的项。栈的基本命令是“push”、“pop”、“peek”(或 top)和“isEmpty”。链表中每个栈元素...
5 分钟阅读
简介:在本文中,我们将讨论 patch.object python。我们编写的软件大部分时间都直接与我们称之为“脏”服务的服务进行交互。简而言之,对应用程序很重要的服务,但其交互具有预期但不受欢迎的副作用,即,服务…
阅读 3 分钟
Selenium 本质上是一个强大的工具,用于自动化 Web 浏览器和测试 Web 应用程序。它提供了广泛的方法和技术来与 Web 元素交互。最常用的方法之一是 find_elements_by_xpath()。此方法允许您在 Web 页面上定位元素...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India