# 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. .

**Examples:**

Input:arr[] = {3, 2, 5}Output:1Explanation:

There is only one valley point. That is arr[1].

Input:arr[] = {5, 4, 8, 3, 6}Output:2Explanation:

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>` |

**Output:**

1

* Time Complexity: *O(n)

* Auxiliary Space: *O(1)