JavaScript 数组局部极值个数程序


JavaScript 数组局部极值个数程序是计算机科学和数据分析领域中一个常见的问题。在这个问题中,我们需要使用 JavaScript 查找数组中的局部极值个数。局部极值是指数字序列中的峰值和谷值。它们是值从递增变为递减或从递减变为递增的点。在数组中查找局部极值个数可能是一项具有挑战性的任务,但它是许多数据分析应用程序中的一个重要步骤。

在本教程中,我们将提供一个使用 JavaScript 解决此问题的分步指南。我们将引导您了解代码背后的逻辑,并提供对其工作原理的清晰理解。在本教程结束时,您将能够编写自己的 JavaScript 程序来查找数组中的局部极值个数。所以让我们开始吧!

首先,让我们用一些例子来理解问题陈述。

问题陈述

问题陈述要求我们找到任何给定数字数组中的局部极值个数。

示例 −

示例 1

Input: [1, 2, 3, 2, 1, 4, 5, 6, 5, 4, 3, 2, 1]
Output: 3

解释 − 在给定的输入数组中,有三个局部极值。第一个局部极值位于索引 2 处,其中值从 3 变为 2。第二个局部极值位于索引 6 处,其中值从 1 变为 4。第三个局部极值位于索引 8 处,其中值从 6 变为 5。因此,输出为 3。

示例 2

Input: [2, 4, 6, 8, 10]
Output: 0

解释 − 在给定的输入数组中,没有局部极值。由于值持续递增,因此没有值从递增变为递减的点。因此,输出为 0。

在这两个示例中,我们可以看到输入数组被检查以查找局部极值,并且程序输出在数组中找到的局部极值个数。局部极值个数是通过查找数组中值从递增变为递减或从递减变为递增的点来确定的。

现在,在理解了问题陈述之后,是时候了解此问题陈述的算法了。

算法

以下是查找数组中局部极值个数的可能算法 −

  • 步骤 1 − 将变量 'count' 初始化为 0,以跟踪局部极值个数。

  • 步骤 2 − 循环遍历数组,从索引 1 开始到索引 n-2 结束,其中 n 是数组的长度。

  • 步骤 3 − 对于数组中的每个元素,检查它是否大于其前一个和下一个元素,或者小于其前一个和下一个元素。如果是,则递增 'count' 变量。

  • 步骤 4 − 完成循环后,返回 'count' 变量作为数组中局部极值个数。

  • 步骤 5 − 让我们借助示例了解使用 Javascript 实现此算法。

示例

使用 Javascript 实现上述算法 −

在此程序中,我们定义了一个名为 'findLocalExtremaCount' 的函数,该函数将数组作为参数并返回该数组中局部极值个数。然后,我们定义了两个数组 'arr1' 和 'arr2',并在每个数组上调用了 'findLocalExtremaCount' 函数。我们使用模板文字来显示每个数组的输入数组和输出计数。

输入 1: arr[] = [1,2,3,2,1,4,5,6,5,4,3,2,1]

预期输出: [1,2,3,2,1,4,5,6,5,4,3,2,1] 中局部极值个数为 3

输入 2: arr[] = [2,4,6,8,10]

预期输出: [2,4,6,8,10] 中局部极值个数为 0

function findLocalExtremaCount(arr) {
   let count = 0;
   for (let i = 1; i < arr.length - 1; i++) {
      if ((arr[i] > arr[i - 1] && arr[i] > arr[i + 1]) || (arr[i] < arr[i - 1] && arr[i] < arr[i + 1])) {
         count++;
      }
   }
   return count;
}
const arr1 = [1, 2, 3, 2, 1, 4, 5, 6, 5, 4, 3, 2, 1];
console.log(`Number of local extrema in [${arr1}] is ${findLocalExtremaCount(arr1)}`);
const arr2 = [2, 4, 6, 8, 10];
console.log(`Number of local extrema in [${arr2}] is ${findLocalExtremaCount(arr2)}`);

结论

在本教程中,我们开发了一个 JavaScript 程序来查找数组中的局部极值个数。该程序实现了一个简单的算法,该算法遍历数组并检查每个元素以查看它是否大于或小于其相邻元素。如果是,则它是局部极值,程序会递增计数。该程序使用 for 循环遍历数组,并且时间复杂度为 O(n),其中 n 是数组中元素的个数。

代码背后的逻辑很简单,易于理解。我们使用模板文字以易于理解的格式显示程序的输入和输出。该程序将数组作为输入,并返回该数组中局部极值个数。最后,我们用两个示例数组测试了该程序,它为每个数组提供了正确的输出。

更新于: 2023年5月2日

101 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.