Open In App

Number of times Maximum and minimum value updated during traversal of array

Given an array arr[], the task is to count the number of times the minimum and the maximum value is updated during the traversal of the array.
Examples: 

Input: arr[] = {10, 5, 20, 22} 
Output: 
Number of times minimum value updated = 2 
Number of times maximum value updated = 3 
Explanation: 
Step 1: Minimum = 10, Maximum = 10 
Step 2: Minimum = 5, Maximum = 10 
Step 3: Minimum = 5, Maximum = 20 
Step 3: Minimum = 5, Maximum = 22
Input: arr[] = {1, 2, 3, 4, 5} 
Output: 
Number of times minimum value updated = 1 
Number of times maximum value updated = 5 
Explanation: 
Step 1: Minimum = 1, Maximum = 1 
Step 2: Minimum = 1, Maximum = 2 
Step 3: Minimum = 1, Maximum = 3 
Step 4: Minimum = 1, Maximum = 4 
Step 5: Minimum = 1, Maximum = 5 

Approach: The idea is to keep track of the minimum value and maximum value. Initially initialize these values as the first element of the array. Finally, Iterate over the array, and whenever the maximum or minimum value is to be changed increment the count accordingly.  

if (cur_min > arr[i])
    cur_min = arr[i]
    count_min++;
if (cur_max < arr[i])
    cur_max = arr[i]
    count_max++;

Below is the implementation of the above approach:
 




// C++ implementation to find the
// number of times minimum and
// maximum value updated during the
// traversal of the array
#include<bits/stdc++.h>
using namespace std;
 
// Function to find the number of
// times minimum and maximum value
// updated during the traversal
// of the given array
void maxUpdated(vector<int> arr)
{
  int h_score = arr[0];
  int l_score = arr[0];
  int i = 1, j = 1;
 
  // Increment i if new
  // highest value occurs
  // Increment j if new
  // lowest value occurs
  for (auto n : arr)
  {
    if (h_score < n)
    {
      h_score = n;
      i++;
    }
    if (l_score > n)
    {
      l_score = n;
      j++;
    }
  }
   
  cout << "Number of times maximum value ";
  cout << "updated = " << i << endl;
  cout << "Number of times minimum value ";
  cout << "updated = " << j << endl;
}
 
// Driver Code
int main()
{
  vector<int> arr({10, 5, 20, 22});
  maxUpdated(arr);
}
 
// This code is contributed by bgangwar59




// Java implementation to find the
// number of times minimum and
// maximum value updated during the
// traversal of the array
 
public class GFG {
     
    // Function to find the number of
    // times minimum and maximum value
    // updated during the traversal
    // of the given array
    static void maxUpdated(int[] arr)
    {
        int h_score = arr[0];
        int l_score = arr[0];
        int i = 1, j = 1;
         
        // Increment i if new
        // highest value occurs
        // Increment j if new
        // lowest value occurs
        for (Integer n : arr) {
            if (h_score < n) {
                h_score = n;
                i++;
            }
            if (l_score > n) {
                l_score = n;
                j++;
            }
        }
        System.out.print(
            "Number of times maximum value ");
        System.out.print(
            "updated = " + i + "\n");
        System.out.print(
            "Number of times minimum value ");
        System.out.print(
            "updated = " + j);
    }
 
    // Driver Code
    public static void main(String[] args)
    {
        int[] arr = { 10, 5, 20, 22 };
        maxUpdated(arr);
    }
}




# Python implementation to count
# the number of times maximum
# and minimum value updated
 
# Function to find the count
# the number of times maximum
# and minimum value updated
def maximumUpdates(arr):
    min = arr[0]
    max = arr[0]
    minCount, maxCount = 1, 1
     
    # Update the maximum and
    # minimum values during traversal
    for arr in arr :
        if arr>max:
            maxCount+= 1
            max = arr
        if arr<min:
            minCount+= 1;
            min = arr
         
    print("Number of times maximum ", end = "")
    print("value updated = ", maxCount)
    print("Number of times minimum ", end = "")
    print("value updated = ", minCount)
 
# Driver code
if __name__ == "__main__" :
 
    arr = [ 10, 5, 20, 22 ]
    maximumUpdates(arr)




// C# implementation to find the
// number of times minimum and
// maximum value updated during the
// traversal of the array
using System;
 
class GFG {
     
// Function to find the number of
// times minimum and maximum value
// updated during the traversal
// of the given array
static void maxUpdated(int[] arr)
{
    int h_score = arr[0];
    int l_score = arr[0];
    int i = 1, j = 1;
         
    // Increment i if new highest
    // value occurs Increment j
    // if new lowest value occurs
    foreach(int n in arr)
    {
        if (h_score < n)
        {
            h_score = n;
            i++;
        }
        if (l_score > n)
        {
            l_score = n;
            j++;
        }
    }
     
    Console.Write("Number of times maximum value ");
    Console.Write("updated = " + i + "\n");
    Console.Write("Number of times minimum value ");
    Console.Write("updated = " + j);
}
 
// Driver Code
public static void Main(String[] args)
{
    int[] arr = { 10, 5, 20, 22 };
    maxUpdated(arr);
}
}
 
// This code is contributed by Amit Katiyar




<script>
 
// Javascript implementation to find the
// number of times minimum and
// maximum value updated during the
// traversal of the array
 
    // Function to find the number of
    // times minimum and maximum value
    // updated during the traversal
    // of the given array
    function maxUpdated(arr)
    {
        let h_score = arr[0];
        let l_score = arr[0];
        let i = 1, j = 1;
          
        // Increment i if new
        // highest value occurs
        // Increment j if new
        // lowest value occurs
        for (let n in arr) {
            if (h_score < arr[n]) {
                h_score = n;
                i++;
            }
            if (l_score > n) {
                l_score = n;
                j++;
            }
        }
        document.write(
            "Number of times maximum value ");
        document.write(
            "updated = " + i + "<br/>");
        document.write(
            "Number of times minimum value ");
        document.write(
            "updated = " + j);
    }
 
 
// Driver Code
     
    let arr = [ 10, 5, 20, 22 ];
    maxUpdated(arr);
       
</script>

Output: 
Number of times maximum value updated = 3
Number of times minimum value updated = 2

 

Time Complexity: O(n)

Auxiliary Space: O(1)


Article Tags :