用于数组中局部极值数量的 Python 程序

pythonserver side programmingprogramming更新于 2024/1/4 13:56:00

在本文中,我们将学习一个用于数组中局部极值数量的 Python 程序。

极值是大于或小于其两个邻居的元素。

假设我们取了一个包含 n 个元素的数组。现在我们将在指定的输入数组中找到局部极值的数量。

注意

第一个和最后一个元素不是极值。

使用 For 循环

注意

array[0] 和 array[n-1] 都只有一个邻居,因此它们既不是最小值也不是最大值。

len() − 对象中的项目数由 len() 方法返回。当对象是字符串时,len() 函数返回字符串中的字符数。

算法(步骤)

以下是执行所需任务所要遵循的算法/步骤。 −

  • 创建一个函数findExtrema(),通过接受输入数组和数组长度作为参数,返回数组中的局部极值。

  • 创建一个变量来存储数组中局部极值的数量。

  • 使用for循环,使用len()函数从数组的第一个元素遍历到数组的长度。

  • 在任何给定时间,以下条件中只有一个为真:a[i] 大于邻居或小于邻居。

  • 使用if条件语句检查a[i]是否大于其两个邻居,并将结果添加到计数中。

  • 同样,使用if条件语句检查a[i]是否小于其两个邻居,并将结果添加到计数中将结果添加到计数中。

  • 使用 return 语句返回计数。

  • 创建一个变量来存储输入数组并打印给定的输入数组。

  • 使用 len() 函数(对象中的项目数)获取输入数组的长度。

  • 通过将输入数组和数组长度作为参数传递给 findExtrema() 函数来调用该函数,以打印数组中局部极值的数量。

示例

以下程序使用 for 循环返回数组中局部极值的数量 −

# 创建一个返回局部极值的函数
# 通过接受输入数组、
# 数组长度作为参数在数组中
def findExtrema(inputArray, arrayLength):
    # 将局部极值的数量存储在数组中
    outputCount = 0
    # 从第一个索引遍历到给定数组的长度
   	for k in range(1, arrayLength - 1):
        # 在任何给定时间,以下条件中只有一个为真:
        # a[i] 大于邻居或小于邻居。
        # 检查 a[i] 是否大于其两个邻居
        # 如果条件为真,则将输出计数增加 1
        # 否则,如果条件为假,则将输出计数增加 0(相同值)
        outputCount += (inputArray[k] > inputArray[k - 1] and inputArray[k] > inputArray[k + 1])
        # 检查 a[i] 是否小于其两个邻居
        outputCount += (inputArray[k] < inputArray[k - 1] and inputArray[k] < inputArray[k + 1])
    # 返回给定数组的局部极值的数量
    返回 outputCount
# 输入数组
inputArray = [5, 0, 1, 2, 1, 0, 3, 4, 1, 2]
# 获取数组的长度
arrayLength = len(inputArray)
# 打印给定的数组
print("给定的数组是:", inputArray)
# 通过将
# 输入数组和数组长度作为参数传递给 findExtrema() 函数来调用它。
print("局部极值的数量为:", findExtrema(inputArray, arrayLength))

输出

执行时,上述程序将生成以下输出 -

给定的数组为:[5, 0, 1, 2, 1, 0, 3, 4, 1, 2]
局部极值的数量为:5

时间复杂度:O(n)

辅助空间:O(1)

因为没有使用更多空间,所以空间复杂度为 O. (1)。

因为我们只使用 for 循环遍历列表,所以时间复杂度为 O(N),其中 N 是给定列表中元素的数量或数组。

结论

在本文了解了局部极值之后,我们使用 Python 的 for 循环实现了同样的问题。


相关文章