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 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++
// 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
// 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
# 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#
// 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 |
Javascript
<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> |
1
Time Complexity: O(n)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!