📜  数组中局部极值数的Java程序

📅  最后修改于: 2022-05-13 01:54:37.905000             🧑  作者: Mango

数组中局部极值数的Java程序

您将获得一个包含 n 个元素的数组。极值是大于其两个邻居或小于其两个邻居的元素。您必须计算给定数组中的局部极值数。
注意:第一个和最后一个元素不是极值。
例子 :

Input : a[] = {1, 5, 2, 5}
Output : 2

Input : a[] = {1, 2, 3}
Output : 0

方法:为了计算极值的数量,我们必须检查一个元素是最大值还是最小值,即它是大于它的两个邻居还是小于两个邻居。为此,只需遍历数组并为每个元素检查其成为极值的可能性。
注意: a[0] 和 a[n-1] 分别只有一个邻居,它们既不是最小值也不是最大值。

Java
// Java to find 
// number of extrema
import java.io.*;
  
class GFG {
      
    // function to find 
    // local extremum
    static int extrema(int a[], int n)
    {
        int count = 0;
      
        // start loop from 
        // position 1 till n-1
        for (int i = 1; i < n - 1; i++) 
        {
      
            // only one condition
            // will be true at a  
            // time either a[i] 
            // will be greater than
            // neighbours or less 
            // than neighbours
      
            // check if a[i] is greater
            // than both its neighbours
            // then add 1 to x
            if(a[i] > a[i - 1] && a[i] > a[i + 1])
                count += 1;
              
            // check if a[i] is 
            // less than both its 
            // neighbours, then 
            // add 1 to x
            if(a[i] < a[i - 1] && a[i] < a[i + 1])
                count += 1;
        }
      
        return count;
    }
      
    // driver program
    public static void main(String args[])
                            throws IOException
    {
        int a[] = { 1, 0, 2, 1 };
        int n = a.length;
        System.out.println(extrema(a, n));
    }
}
  
  
/* This code is contributed by Nikita Tiwari.*/


输出 :

2

有关详细信息,请参阅有关数组中局部极值数的完整文章!