Count of array elements which is smaller than both its adjacent elements

Given an array arr[] of size N, the task is to find the number of valley points in the array.

Valley Point: Any elements of the array is known as a valley point if it is smaller than both its adjacent elements, i.e. arr[i-1] > arr[i] < arr[i+1].

Examples:

Input: arr[] = {3, 2, 5}
Output: 1
Explanation:
There is only one valley point. That is arr[1].

Input: arr[] = {5, 4, 8, 3, 6}
Output: 2
Explanation:
There are two valley points. That is arr[1] and arr[3].



Approach: The idea is to iterate over the array from 1 to N-1 and for each element check for that element is a valley point or not if yes, then increment the count of the valley point by 1.

if (arr[i-1] > arr[i] < arr[i])
     count += 1;

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to count the number
// of valley points in the array
#include<bits/stdc++.h>
using namespace std;
  
// Function to count the valley points
// in the given character array
int countValleys(int n, int arr[])
{
    int count = 0, temp = 0;
      
    // Loop to iterate over the 
    // elements of the given array
    for(int i = 1; i < n - 1; i++) 
    {
         
       // Condition to check if the given
       // element is a valley point
       if (arr[i - 1] > arr[i] &&
           arr[i] < arr[i + 1])
       {
           count++;
       }
    }
    return count;
}
  
// Driver Code
int main()
{
    int arr[] = { 3, 2, 5 };
    int n = sizeof(arr) / sizeof(arr[0]);
      
    cout << countValleys(n, arr);
}
  
// This code is contributed by Surendra_Gangwar

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to count the number
// of valley points in the array
  
import java.io.*;
  
class GFG {
  
    // Function to count the valley points
    // in the given character array
    static int countValleys(int n, int arr[])
    {
        int count = 0, temp = 0;
  
        // Loop to iterate over the elements
        // of the given array
        for (int i = 1; i < n - 1; i++) {
  
            // Condition to check if the given
            // element is a valley point
            if (arr[i - 1] > arr[i]
                && arr[i] < arr[i + 1]) {
                count++;
            }
        }
        return count;
    }
  
    // Driver Code
    public static void main(String[] args)
    {
        int arr[] = { 3, 2, 5 };
        int n = arr.length;
        System.out.println(
            countValleys(n, arr));
    }
}

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to count the number
# of valley points in the array
  
# Function to count the valley points
# in the given character array
def countValleys(n, arr):
  
    count = 0; temp = 0;
  
    # Loop to iterate over the 
    # elements of the given array
    for i in range(1, n):
  
        # Condition to check if the given
        # element is a valley point
        if (arr[i - 1] > arr[i] and
            arr[i] < arr[i + 1]):
  
            count += 1;
  
    return count;
  
# Driver Code
arr = [ 3, 2, 5 ];
n = len(arr);
      
print(countValleys(n, arr));
  
# This code is contributed by Code_Mech

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to count the number
// of valley points in the array
using System;
class GFG{
  
// Function to count the valley points
// in the given character array
static int countValleys(int n, int []arr)
{
    int count = 0;
  
    // Loop to iterate over the elements
    // of the given array
    for (int i = 1; i < n - 1; i++) 
    {
  
        // Condition to check if the given
        // element is a valley point
        if (arr[i - 1] > arr[i] && 
            arr[i] < arr[i + 1]) 
        {
            count++;
        }
    }
    return count;
}
  
// Driver Code
public static void Main()
{
    int []arr = { 3, 2, 5 };
    int n = arr.Length;
    Console.Write(countValleys(n, arr));
}
}
  
// This code is contributed by Code_Mech

chevron_right


Output:

1

competitive-programming-img




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.