Number of times Maximum and minimum value updated during traversal of array
Last Updated :
10 Nov, 2021
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++
#include<bits/stdc++.h>
using namespace std;
void maxUpdated(vector< int > arr)
{
int h_score = arr[0];
int l_score = arr[0];
int i = 1, j = 1;
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;
}
int main()
{
vector< int > arr({10, 5, 20, 22});
maxUpdated(arr);
}
|
Java
public class GFG {
static void maxUpdated( int [] arr)
{
int h_score = arr[ 0 ];
int l_score = arr[ 0 ];
int i = 1 , j = 1 ;
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);
}
public static void main(String[] args)
{
int [] arr = { 10 , 5 , 20 , 22 };
maxUpdated(arr);
}
}
|
Python
def maximumUpdates(arr):
min = arr[ 0 ]
max = arr[ 0 ]
minCount, maxCount = 1 , 1
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)
if __name__ = = "__main__" :
arr = [ 10 , 5 , 20 , 22 ]
maximumUpdates(arr)
|
C#
using System;
class GFG {
static void maxUpdated( int [] arr)
{
int h_score = arr[0];
int l_score = arr[0];
int i = 1, j = 1;
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);
}
public static void Main(String[] args)
{
int [] arr = { 10, 5, 20, 22 };
maxUpdated(arr);
}
}
|
Javascript
<script>
function maxUpdated(arr)
{
let h_score = arr[0];
let l_score = arr[0];
let i = 1, j = 1;
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);
}
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)
Share your thoughts in the comments
Please Login to comment...