Maximum difference between two elements in an Array
Last Updated :
13 Mar, 2023
Given an array arr[] of N integers, the task is to find the maximum difference between any two elements of the array.
Examples:
Input: arr[] = {2, 1, 5, 3}
Output: 4
|5 – 1| = 4
Input: arr[] = {-10, 4, -9, -5}
Output: 14
Naive Approach:- As the maximum difference will be in between smallest and the largest array so we will simply sort the array and get the maximum difference.
Below is the implementation for the same:
C++
#include <bits/stdc++.h>
using namespace std;
int maxAbsDiff( int arr[], int n)
{
sort(arr,arr+n);
return arr[n-1]-arr[0];
}
int main()
{
int arr[] = { 2, 1, 5, 3 };
int n = sizeof (arr) / sizeof (arr[0]);
cout << maxAbsDiff(arr, n);
return 0;
}
|
Java
import java.util.*;
class GFG
{
static int maxAbsDiff( int arr[], int n)
{
Arrays.sort(arr);
return arr[n- 1 ] - arr[ 0 ];
}
public static void main(String args[]) {
int arr[] = { 2 , 1 , 5 , 3 };
int n = arr.length;
System.out.println(maxAbsDiff(arr, n));
}
}
|
Python3
def maxAbsDiff(arr, n):
arr.sort()
return arr[n - 1 ] - arr[ 0 ]
arr = [ 2 , 1 , 5 , 3 ]
n = len (arr)
print (maxAbsDiff(arr, n))
|
C#
using System;
class Program
{
static int maxAbsDiff( int [] arr, int n)
{
Array.Sort(arr);
return arr[n - 1] - arr[0];
}
static void Main( string [] args)
{
int [] arr = { 2, 1, 5, 3 };
int n = arr.Length;
Console.WriteLine(maxAbsDiff(arr, n));
}
}
|
Javascript
function maxAbsDiff(arr, n)
{
arr.sort();
return arr[n-1]-arr[0];
}
let arr = [ 2, 1, 5, 3 ];
let n = arr.length;
console.log(maxAbsDiff(arr, n));
|
Time Complexity:- O(nlogn)
Auxiliary Space:- O(1)
Approach: The maximum absolute difference in the array will always be the absolute difference between the minimum and the maximum element from the array.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
int maxAbsDiff( int arr[], int n)
{
int minEle = arr[0];
int maxEle = arr[0];
for ( int i = 1; i < n; i++) {
minEle = min(minEle, arr[i]);
maxEle = max(maxEle, arr[i]);
}
return (maxEle - minEle);
}
int main()
{
int arr[] = { 2, 1, 5, 3 };
int n = sizeof (arr) / sizeof (arr[0]);
cout << maxAbsDiff(arr, n);
return 0;
}
|
Java
class GFG {
static int maxAbsDiff( int arr[], int n)
{
int minEle = arr[ 0 ];
int maxEle = arr[ 0 ];
for ( int i = 1 ; i < n; i++) {
minEle = Math.min(minEle, arr[i]);
maxEle = Math.max(maxEle, arr[i]);
}
return (maxEle - minEle);
}
public static void main(String[] args)
{
int [] arr = { 2 , 1 , 5 , 3 };
int n = arr.length;
System.out.print(maxAbsDiff(arr, n));
}
}
|
Python3
def maxAbsDiff(arr, n):
minEle = arr[ 0 ]
maxEle = arr[ 0 ]
for i in range ( 1 , n):
minEle = min (minEle, arr[i])
maxEle = max (maxEle, arr[i])
return (maxEle - minEle)
arr = [ 2 , 1 , 5 , 3 ]
n = len (arr)
print (maxAbsDiff(arr, n))
|
C#
using System;
class GFG
{
static int maxAbsDiff( int []arr, int n)
{
int minEle = arr[0];
int maxEle = arr[0];
for ( int i = 1; i < n; i++)
{
minEle = Math.Min(minEle, arr[i]);
maxEle = Math.Max(maxEle, arr[i]);
}
return (maxEle - minEle);
}
public static void Main()
{
int [] arr = { 2, 1, 5, 3 };
int n = arr.Length;
Console.WriteLine(maxAbsDiff(arr, n));
}
}
|
PHP
<?php
function maxAbsDiff( $arr , $n )
{
$minEle = $arr [0];
$maxEle = $arr [0];
for ( $i = 1; $i < $n ; $i ++)
{
$minEle = min( $minEle , $arr [ $i ]);
$maxEle = max( $maxEle , $arr [ $i ]);
}
return ( $maxEle - $minEle );
}
$arr = array (2, 1, 5, 3);
$n = sizeof( $arr );
echo maxAbsDiff( $arr , $n );
|
Javascript
<script>
function maxAbsDiff(arr, n)
{
let minEle = arr[0];
let maxEle = arr[0];
for (let i = 1; i < n; i++) {
minEle = Math.min(minEle, arr[i]);
maxEle = Math.max(maxEle, arr[i]);
}
return (maxEle - minEle);
}
let arr = [ 2, 1, 5, 3 ];
let n = arr.length;
document.write(maxAbsDiff(arr, n));
</script>
|
Time Complexity : O(n)
Auxiliary Space : O(1)
Another Approach ( Using STL): The maximum absolute difference in the array will always be the absolute difference between the minimum and the maximum element from the array. Below is the implementation of the above approach:
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
int maxAbsDiff( int arr[], int n)
{
int maxele = *max_element(arr, arr + n);
int minele = *min_element(arr, arr + n);
int ans = abs (maxele - minele);
return ans;
}
int main()
{
int arr[] = { -10, 4, -9, -5 };
int n = sizeof (arr) / sizeof (arr[0]);
cout << maxAbsDiff(arr, n);
return 0;
}
|
Java
import java.util.Arrays;
class GFG {
public static int maxAbsDiff( int arr[], int n)
{
int maxele = Arrays.stream(arr).max().getAsInt();
int minele = Arrays.stream(arr).min().getAsInt();
int ans = Math.abs(maxele - minele);
return ans;
}
public static void main (String[] args)
{
int arr[] = { - 10 , 4 , - 9 , - 5 };
int n = arr.length;
System.out.print(maxAbsDiff(arr, n));
}
}
|
Python3
def maxAbsDiff(arr, n):
maxele = max (arr)
minele = min (arr)
ans = abs (maxele - minele)
return ans
arr = [ - 10 , 4 , - 9 , - 5 ]
n = len (arr)
print (maxAbsDiff(arr, n))
|
C#
using System;
using System.Linq;
public class GFG{
public static int maxAbsDiff( int [] arr, int n)
{
int maxele = arr.Max();
int minele = arr.Min();
int ans = Math.Abs(maxele - minele);
return ans;
}
static public void Main ()
{
int [] arr = { -10, 4, -9, -5 };
int n = arr.Length;
Console.Write(maxAbsDiff(arr, n));
}
}
|
Javascript
<script>
function maxAbsDiff(arr, n)
{
var maxele = Math.max(...arr);
var minele = Math.min(...arr);
var ans = Math.abs(maxele - minele);
return ans;
}
var arr = [ -10, 4, -9, -5 ];
var n = arr.Length;
document.write(maxAbsDiff(arr, n));
</script>
|
Time Complexity : O(n)
Auxiliary Space: O(1)
Share your thoughts in the comments
Please Login to comment...