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.
.
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
if (arr[i-1] > arr[i] < arr[i]) count += 1;
Below is the implementation of the above approach:
// 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 |
// 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));
}
} |
# 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 |
// 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 |
<script> // Javascript program to count the number // of valley points in the array // Function to count the valley points // in the given character array function countValleys(n, arr)
{ let count = 0, temp = 0;
// Loop to iterate over the
// elements of the given array
for (let 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 let arr = [ 3, 2, 5 ]; let n = arr.length; document.write(countValleys(n, arr)); // This code is contributed by rishavmahato348 </script> |
Output:
1
Time Complexity: O(n)
Auxiliary Space: O(1)