Wednesday, July 3, 2024
HomeData ModellingData Structure & AlgorithmNumber of times Maximum and minimum value updated during traversal of array

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




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




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




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




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


Javascript




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

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

Calisto Chipfumbu
Calisto Chipfumbuhttp://cchipfumbu@gmail.com
I have 5 years' worth of experience in the IT industry, primarily focused on Linux and Database administration. In those years, apart from learning significant technical knowledge, I also became comfortable working in a professional team and adapting to my environment, as I switched through 3 roles in that time.
RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments