编写 Python 程序查找较大的元素

2024 年 8 月 29 日 | 阅读 3 分钟

在本教程中,我们将编写 Python 程序来查找给定列表中的最大元素。最大元素是指数组中紧邻当前元素右侧且大于当前元素的元素。让我们来看一下问题描述。

问题陈述

给定一个大小为 N 的数组 arr[],任务是按数组中出现的顺序查找数组中每个元素的下一个更大元素。如果当前元素没有更大的元素,则当前元素的最大元素为 -1。

示例 -

解决方案 -

我们可以使用栈数据结构来解决这个问题。让我们来理解下面的例子。

示例 -

输出

[3, 4, 4, -1]

解释 -

在上面的代码中,我们初始化一个空栈和一个大小为 N 的结果列表,其中每个元素最初设置为 -1。

接下来,我们从左到右遍历数组 arr[]。对于每个元素 arr[i],我们将其与栈顶元素进行比较。如果 arr[i] 大于栈顶元素,我们从栈中弹出索引,并将结果列表中相应的元素设置为 arr[i]。我们继续此过程,直到栈为空或栈顶元素大于 arr[i]。

在处理完 arr[] 中的每个元素后,结果列表将包含数组中每个元素按出现顺序的下一个更大元素。如果某个元素没有下一个更大的元素,则其在结果列表中的相应值将保持为 -1。

方法 2:蛮力法

在这种方法中,我们使用嵌套循环,并将每个元素与其右侧的元素进行比较,直到找到更大的元素。算法如下。

算法 -

  1. 从左到右遍历给定数组。
  2. 对于每个元素 arr[i],遍历子数组 arr[i+1] 到 arr[N-1] 以查找下一个更大的元素。
  3. 如果找到更大的元素,则将其赋给变量 next greater 并中断内层循环。
  4. 如果未找到更大的元素,则将 -1 赋给变量 next greater。
  5. 打印每个元素的 next greater 值。

让我们来理解以下代码。

示例 -

输出

5 25 25 -1 -1 -1