JavaScript 计算数组中局部极值的个数

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 是数组中的元素数量。

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程