Find minimum difference between any two elements (pair) in given array
Last Updated :
05 Aug, 2024
Given an unsorted array, find the minimum difference between any pair in the given array.
Examples :
Input: {1, 5, 3, 19, 18, 25}
Output: 1
Explanation: Minimum difference is between 18 and 19
Input: {30, 5, 20, 9}
Output: 4
Explanation: Minimum difference is between 5 and 9
Input: {1, 19, -4, 31, 38, 25, 100}
Output: 5
Explanation: Minimum difference is between 1 and -4
Naive Approach: To solve the problem follow the below idea:
A simple solution is to use two loops two generate every pair of elements and compare them to get the minimum difference
Below is the implementation of the above approach:
C++
// C++ implementation of simple method to find
// minimum difference between any pair
#include <bits/stdc++.h>
using namespace std;
// Returns minimum difference between any pair
int findMinDiff(int arr[], int n)
{
// Initialize difference as infinite
int diff = INT_MAX;
// Find the min diff by comparing difference
// of all possible pairs in given array
for (int i = 0; i < n - 1; i++)
for (int j = i + 1; j < n; j++)
if (abs(arr[i] - arr[j]) < diff)
diff = abs(arr[i] - arr[j]);
// Return min diff
return diff;
}
// Driver code
int main()
{
int arr[] = { 1, 5, 3, 19, 18, 25 };
int n = sizeof(arr) / sizeof(arr[0]);
// Function call
cout << "Minimum difference is " << findMinDiff(arr, n);
return 0;
}
Java
// Java implementation of simple method to find
// minimum difference between any pair
class GFG {
// Returns minimum difference between any pair
static int findMinDiff(int[] arr, int n)
{
// Initialize difference as infinite
int diff = Integer.MAX_VALUE;
// Find the min diff by comparing difference
// of all possible pairs in given array
for (int i = 0; i < n - 1; i++)
for (int j = i + 1; j < n; j++)
if (Math.abs((arr[i] - arr[j])) < diff)
diff = Math.abs((arr[i] - arr[j]));
// Return min diff
return diff;
}
// Driver code
public static void main(String[] args)
{
int arr[] = new int[] { 1, 5, 3, 19, 18, 25 };
// Function call
System.out.println("Minimum difference is "
+ findMinDiff(arr, arr.length));
}
}
Python3
# Python implementation of simple method to find
# minimum difference between any pair
# Returns minimum difference between any pair
def findMinDiff(arr, n):
# Initialize difference as infinite
diff = 10**20
# Find the min diff by comparing difference
# of all possible pairs in given array
for i in range(n-1):
for j in range(i+1, n):
if abs(arr[i]-arr[j]) < diff:
diff = abs(arr[i] - arr[j])
# Return min diff
return diff
# Driver code
if __name__ == "__main__":
arr = [1, 5, 3, 19, 18, 25]
n = len(arr)
# Function call
print("Minimum difference is " + str(findMinDiff(arr, n)))
# This code is contributed by Pratik Chhajer
C#
// C# implementation of simple method to find
// minimum difference between any pair
using System;
class GFG {
// Returns minimum difference between any pair
static int findMinDiff(int[] arr, int n)
{
// Initialize difference as infinite
int diff = int.MaxValue;
// Find the min diff by comparing difference
// of all possible pairs in given array
for (int i = 0; i < n - 1; i++)
for (int j = i + 1; j < n; j++)
if (Math.Abs((arr[i] - arr[j])) < diff)
diff = Math.Abs((arr[i] - arr[j]));
// Return min diff
return diff;
}
// Driver code
public static void Main()
{
int[] arr = new int[] { 1, 5, 3, 19, 18, 25 };
// Function call
Console.Write("Minimum difference is "
+ findMinDiff(arr, arr.Length));
}
}
// This code is contributed by nitin mittal.
Javascript
<script>
// JavaScript program implementation of simple method to find
// minimum difference between any pair
// Returns minimum difference between any pair
function findMinDiff( arr, n)
{
// Initialize difference as infinite
let diff = Number.MAX_VALUE;
// Find the min diff by comparing difference
// of all possible pairs in given array
for (let i=0; i<n-1; i++)
for (let j=i+1; j<n; j++)
if (Math.abs((arr[i] - arr[j]) )< diff)
diff = Math.abs((arr[i] - arr[j]));
// Return min diff
return diff;
}
// Driver Code
let arr = [1, 5, 3, 19, 18, 25];
document.write("Minimum difference is "+
findMinDiff(arr, arr.length));
</script>
PHP
<?php
// PHP implementation of simple
// method to find minimum
// difference between any pair
// Returns minimum difference
// between any pair
function findMinDiff($arr, $n)
{
// Initialize difference
// as infinite
$diff = PHP_INT_MAX;
// Find the min diff by comparing
// difference of all possible
// pairs in given array
for ($i = 0; $i < $n - 1; $i++)
for ($j = $i + 1; $j < $n; $j++)
if (abs($arr[$i] - $arr[$j]) < $diff)
$diff = abs($arr[$i] - $arr[$j]);
// Return min diff
return $diff;
}
// Driver code
$arr = array(1, 5, 3, 19, 18, 25);
$n = sizeof($arr);
// Function call
echo "Minimum difference is " ,
findMinDiff($arr, $n);
// This code is contributed by ajit
?>
OutputMinimum difference is 1
Time Complexity: O(N2).
Auxiliary Space: O(1)
Find the minimum difference between any two elements using sorting:
The idea is to use sorting and compare every adjacent pair of the array
Follow the given steps to solve the problem:
- Sort array in ascending order
- Initialize difference as infinite
- Compare all adjacent pairs in a sorted array and keep track of the minimum difference
Below is the implementation of the above approach:
C++
// C++ program to find minimum difference between
// any pair in an unsorted array
#include <bits/stdc++.h>
using namespace std;
// Returns minimum difference between any pair
int findMinDiff(int arr[], int n)
{
// Sort array in non-decreasing order
sort(arr, arr + n);
// Initialize difference as infinite
int diff = INT_MAX;
// Find the min diff by comparing adjacent
// pairs in sorted array
for (int i = 0; i < n - 1; i++)
if (arr[i + 1] - arr[i] < diff)
diff = arr[i + 1] - arr[i];
// Return min diff
return diff;
}
// Driver code
int main()
{
int arr[] = { 1, 5, 3, 19, 18, 25 };
int n = sizeof(arr) / sizeof(arr[0]);
// Function call
cout << "Minimum difference is " << findMinDiff(arr, n);
return 0;
}
Java
// Java program to find minimum difference between
// any pair in an unsorted array
import java.util.Arrays;
class GFG {
// Returns minimum difference between any pair
static int findMinDiff(int[] arr, int n)
{
// Sort array in non-decreasing order
Arrays.sort(arr);
// Initialize difference as infinite
int diff = Integer.MAX_VALUE;
// Find the min diff by comparing adjacent
// pairs in sorted array
for (int i = 0; i < n - 1; i++)
if (arr[i + 1] - arr[i] < diff)
diff = arr[i + 1] - arr[i];
// Return min diff
return diff;
}
// Driver code
public static void main(String[] args)
{
int arr[] = new int[] { 1, 5, 3, 19, 18, 25 };
// Function call
System.out.println("Minimum difference is "
+ findMinDiff(arr, arr.length));
}
}
Python3
# Python3 program to find minimum difference between
# any pair in an unsorted array
# Returns minimum difference between any pair
def findMinDiff(arr, n):
# Sort array in non-decreasing order
arr = sorted(arr)
# Initialize difference as infinite
diff = 10**20
# Find the min diff by comparing adjacent
# pairs in sorted array
for i in range(n-1):
if arr[i+1] - arr[i] < diff:
diff = arr[i+1] - arr[i]
# Return min diff
return diff
# Driver code
if __name__ == "__main__":
arr = [1, 5, 3, 19, 18, 25]
n = len(arr)
# Function call
print("Minimum difference is " + str(findMinDiff(arr, n)))
# This code is contributed by Pratik Chhajer
C#
// C# program to find minimum
// difference between any pair
// in an unsorted array
using System;
class GFG {
// Returns minimum difference
// between any pair
static int findMinDiff(int[] arr, int n)
{
// Sort array in
// non-decreasing order
Array.Sort(arr);
// Initialize difference
// as infinite
int diff = int.MaxValue;
// Find the min diff by
// comparing adjacent pairs
// in sorted array
for (int i = 0; i < n - 1; i++)
if (arr[i + 1] - arr[i] < diff)
diff = arr[i + 1] - arr[i];
// Return min diff
return diff;
}
// Driver Code
public static void Main()
{
int[] arr = new int[] { 1, 5, 3, 19, 18, 25 };
// Function call
Console.WriteLine("Minimum difference is "
+ findMinDiff(arr, arr.Length));
}
}
// This code is contributed by anuj_67.
Javascript
<script>
// Javascript program to find minimum
// difference between any pair
// in an unsorted array
// Returns minimum difference
// between any pair
function findMinDiff(arr, n)
{
// Sort array in
// non-decreasing order
arr.sort(function(a, b)
{return a - b});
// Initialize difference
// as infinite
let diff = Number.MAX_VALUE;
// Find the min diff by
// comparing adjacent pairs
// in sorted array
for (let i = 0; i < n - 1; i++)
if (arr[i + 1] - arr[i] < diff)
diff = arr[i + 1] - arr[i];
// Return min diff
return diff;
}
let arr = [1, 5, 3, 19, 18, 25];
document.write("Minimum difference is "
+ findMinDiff(arr, arr.length));
</script>
PHP
<?php
// PHP program to find minimum
// difference between any pair
// in an unsorted array
// Returns minimum difference
// between any pair
function findMinDiff($arr, $n)
{
// Sort array in
// non-decreasing order
sort($arr);
// Initialize difference
// as infinite
$diff = PHP_INT_MAX;
// Find the min diff by
// comparing adjacent
// pairs in sorted array
for ($i = 0; $i < $n - 1; $i++)
if ($arr[$i + 1] - $arr[$i] < $diff)
$diff = $arr[$i + 1] - $arr[$i];
// Return min diff
return $diff;
}
// Driver code
$arr = array(1, 5, 3, 19, 18, 25);
$n = sizeof($arr);
// Function call
echo "Minimum difference is " ,
findMinDiff($arr, $n);
// This code is contributed ajit
?>
OutputMinimum difference is 1
Time Complexity: O(N log N)
Auxiliary Space: O(1)
Find the minimum difference between any two elements using Map:
We can solve this problem using a map. We can first sort the array in ascending order and then find the minimum difference by comparing adjacent elements. Alternatively, we can insert all the elements into a map and then iterate through the map, comparing adjacent elements.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
int findMinDiff(int arr[], int n) {
map<int, int> mp;
int minDiff = INT_MAX;
for (int i = 0; i < n; i++) {
auto it = mp.lower_bound(arr[i]); // Find the first element that is greater than or equal to arr[i]
if (it != mp.end()) {
minDiff = min(minDiff, it->first - arr[i]); // Check difference between current element and the next element in map
}
if (it != mp.begin()) {
it--;
minDiff = min(minDiff, arr[i] - it->first); // Check difference between current element and the previous element in map
}
mp[arr[i]] = i; // Insert element into map
}
return minDiff;
}
int main() {
int arr[] = {1, 5, 3, 19, 18, 25};
int n = sizeof(arr) / sizeof(arr[0]);
cout << findMinDiff(arr, n) << endl;
return 0;
}
Java
import java.util.*;
public class Main {
public static int findMinDiff(int[] arr, int n) {
TreeMap<Integer, Integer> mp = new TreeMap<>();
int minDiff = Integer.MAX_VALUE;
for (int i = 0; i < n; i++) {
Map.Entry<Integer, Integer> entry = mp.ceilingEntry(arr[i]); // Find the first element that is greater than or equal to arr[i]
if (entry != null) {
minDiff = Math.min(minDiff, entry.getKey() - arr[i]); // Check difference between current element and the next element in map
}
entry = mp.lowerEntry(arr[i]);
if (entry != null) {
minDiff = Math.min(minDiff, arr[i] - entry.getKey()); // Check difference between current element and the previous element in map
}
mp.put(arr[i], i); // Insert element into map
}
return minDiff;
}
public static void main(String[] args) {
int[] arr = {1, 5, 3, 19, 18, 25};
int n = arr.length;
System.out.println(findMinDiff(arr, n));
}
}
Python3
import bisect
def findMinDiff(arr, n):
mp = {}
minDiff = float('inf')
for i in range(n):
it = bisect.bisect_left(list(mp.keys()), arr[i]) # Find the first element that is greater than or equal to arr[i]
if it != len(mp):
minDiff = min(minDiff, list(mp.keys())[it] - arr[i]) # Check difference between current element and the next element in map
if it != 0:
minDiff = min(minDiff, arr[i] - list(mp.keys())[it-1]) # Check difference between current element and the previous element in map
mp[arr[i]] = i # Insert element into map
return minDiff
arr = [1, 5, 3, 19, 18, 25]
n = len(arr)
print(findMinDiff(arr, n))
C#
using System;
using System.Collections.Generic;
class Program
{
static int FindMinDiff(int[] arr)
{
Dictionary<int, int> dict = new Dictionary<int, int>();
int minDiff = int.MaxValue;
for (int i = 0; i < arr.Length; i++)
{
// Find the first element that is greater than or equal to arr[i]
KeyValuePair<int, int>? greaterOrEqual = null;
foreach (var kvp in dict)
{
if (kvp.Key >= arr[i])
{
greaterOrEqual = kvp;
break;
}
}
if (greaterOrEqual != null)
{
// Check difference between the current element
//and the next element in the dictionary
minDiff = Math.Min(minDiff, greaterOrEqual.Value.Key - arr[i]);
}
// Find the previous element in the dictionary
KeyValuePair<int, int>? previous = null;
foreach (var kvp in dict)
{
if (kvp.Key < arr[i])
{
previous = kvp;
}
else
{
break;
}
}
if (previous != null)
{
// Check difference between the current
// element and the previous element in the dictionary
minDiff = Math.Min(minDiff, arr[i] - previous.Value.Key);
}
// Insert the current element into the dictionary
dict[arr[i]] = i;
}
return minDiff;
}
static void Main()
{
int[] arr = { 1, 5, 3, 19, 18, 25 };
int minDiff = FindMinDiff(arr);
Console.WriteLine(minDiff);
}
}
Javascript
function findMinDiff(arr, n) {
let mp = new Map(); // Create a Map to store elements of the array
let minDiff = Infinity; // Initialize the minimum difference with Infinity
for (let i = 0; i < n; i++) {
let keys = Array.from(mp.keys()); // Get an array of keys from the Map
let it = bisect_left(keys, arr[i]); // Find the first element that is greater than or equal to arr[i]
if (it !== keys.length) {
minDiff = Math.min(minDiff, keys[it] - arr[i]); // Check difference between current element and the next element in the map
}
if (it !== 0) {
minDiff = Math.min(minDiff, arr[i] - keys[it - 1]); // Check difference between current element and the previous element in the map
}
mp.set(arr[i], i); // Insert element into the map
}
return minDiff; // Return the minimum difference
}
function bisect_left(arr, x) {
let lo = 0;
let hi = arr.length;
while (lo < hi) {
let mid = Math.floor((lo + hi) / 2); // Calculate the middle index
if (arr[mid] < x) {
lo = mid + 1; // If the middle element is less than x, search the right half
} else {
hi = mid; // If the middle element is greater than or equal to x, search the left half
}
}
return lo; // Return the index where x should be inserted or found
}
let arr = [1, 5, 3, 19, 18, 25];
let n = arr.length;
console.log(findMinDiff(arr, n));
Time Complexity: O(N*log(N))
Auxiliary Space: O(N)
Find the minimum difference between any two elements using Merge Sort:
The merge Helper function always compares two elements between each other. We can do this in O(nlogn) time instead of sorting and then again traversing the sorted array.
- Take a variable minDiff and store the minimum difference and compare with each recursive stack of the merge helper function.
C++
// C++ code
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
// Function to find minimum difference between any pair
// of elements in an array.
int MinimumDifference(int arr[], int n)
{
if (n < 2)
return INT_MAX;
int mid = n / 2;
int left[mid];
int right[n - mid];
for (int i = 0; i < mid; i++) {
left[i] = arr[i];
}
for (int i = mid; i < n; i++) {
right[i - mid] = arr[i];
}
int ls = MinimumDifference(left, mid);
int rs = MinimumDifference(right, n - mid);
int mg
= mergeHelper(left, right, arr, mid, n - mid);
return min(mg, min(ls, rs));
}
private:
int mergeHelper(int left[], int right[], int arr[],
int n1, int n2)
{
int i = 0;
int j = 0;
int k = 0;
int minDiff = INT_MAX;
while (i < n1 && j < n2) {
if (left[i] <= right[j]) {
minDiff = min(minDiff, right[j] - left[i]);
arr[k] = left[i];
i++;
}
else {
minDiff = min(minDiff, left[i] - right[j]);
arr[k] = right[j];
j++;
}
k++;
}
while (i < n1) {
arr[k] = left[i];
i++;
k++;
}
while (j < n2) {
arr[k] = right[j];
j++;
k++;
}
return minDiff;
}
};
int main()
{
// Code
int arr[] = { 1, 5, 3, 19, 18, 25 };
int n = sizeof(arr) / sizeof(arr[0]);
// Function call
Solution sln;
int minDiff = sln.MinimumDifference(arr, n);
cout << "Minimum difference is " << minDiff << endl;
return 0;
}
// This code is contributed by Aman Kumar
Java
// Java Code
import java.io.*;
public class GFG {
public static void main(String[] args)
{
// Code
int[] arr = new int[] { 1, 5, 3, 19, 18, 25 };
// Function call
var sln = new Solution();
var minDiff
= sln.MinimumDifference(arr, arr.length);
System.out.println("Minimum difference is "
+ minDiff);
}
}
class Solution {
// Function to find minimum difference between any pair
// of elements in an array.
public int MinimumDifference(int[] arr, int n)
{
// code here
if (arr.length < 2)
return Integer.MAX_VALUE;
int mid = arr.length / 2;
int[] left = new int[mid];
int[] right = new int[arr.length - mid];
int i = 0;
while (i < mid) {
left[i] = arr[i];
i += 1;
}
while (i < arr.length) {
right[i - mid] = arr[i];
i += 1;
}
var ls = MinimumDifference(left, left.length);
var rs = MinimumDifference(right, right.length);
var mg = mergeHelper(left, right, arr);
return Math.min(mg, Math.min(ls, rs));
}
private int mergeHelper(int[] left, int[] right,
int[] arr)
{
int i = 0;
int j = 0;
int k = 0;
int minDiff = Integer.MAX_VALUE;
while (i < left.length && j < right.length) {
if (left[i] <= right[j]) {
minDiff
= Math.min(minDiff, right[j] - left[i]);
arr[k] = left[i];
i += 1;
}
else {
minDiff
= Math.min(minDiff, left[i] - right[j]);
arr[k] = right[j];
j += 1;
}
k += 1;
}
while (i < left.length) {
arr[k] = left[i];
i += 1;
k += 1;
}
while (j < right.length) {
arr[k] = right[j];
j += 1;
k += 1;
}
return minDiff;
}
}
// This code is contributed by Pushpesh Raj.
Python3
# Python Code
class Solution:
# Function to find minimum difference between any pair
# of elements in an array.
def MinimumDifference(self, arr, n):
if n < 2:
return float('inf')
mid = n // 2
left = arr[:mid]
right = arr[mid:]
ls = self.MinimumDifference(left, len(left))
rs = self.MinimumDifference(right, len(right))
mg = self.mergeHelper(left, right, arr, len(left), len(right))
return min(mg, min(ls, rs))
def mergeHelper(self, left, right, arr, n1, n2):
i, j, k = 0, 0, 0
minDiff = float('inf')
while i < n1 and j < n2:
if left[i] <= right[j]:
minDiff = min(minDiff, right[j] - left[i])
arr[k] = left[i]
i += 1
else:
minDiff = min(minDiff, left[i] - right[j])
arr[k] = right[j]
j += 1
k += 1
while i < n1:
arr[k] = left[i]
i += 1
k += 1
while j < n2:
arr[k] = right[j]
j += 1
k += 1
return minDiff
# Driver Code
arr = [1, 5, 3, 19, 18, 25]
n = len(arr)
sln = Solution()
# Function call
minDiff = sln.MinimumDifference(arr, n)
print("Minimum difference is", minDiff)
# This code is contributed by Prasad Kandekar(prasad264)
C#
using System;
public class GFG {
static public void Main()
{
// Code
int[] arr = new int[] { 1, 5, 3, 19, 18, 25 };
// Function call
var sln = new Solution();
var minDiff
= sln.MinimumDifference(arr, arr.Length);
Console.WriteLine("Minimum difference is "
+ minDiff);
}
}
class Solution {
// Function to find minimum difference between any pair
// of elements in an array.
public int MinimumDifference(int[] arr, int n)
{
// code here
if (arr.Length < 2)
return int.MaxValue;
int mid = arr.Length / 2;
int[] left = new int[mid];
int[] right = new int[arr.Length - mid];
int i = 0;
while (i < mid) {
left[i] = arr[i];
i += 1;
}
while (i < arr.Length) {
right[i - mid] = arr[i];
i += 1;
}
var ls = MinimumDifference(left, left.Length);
var rs = MinimumDifference(right, right.Length);
var mg = mergeHelper(left, right, arr);
return Math.Min(mg, Math.Min(ls, rs));
}
private int mergeHelper(int[] left, int[] right,
int[] arr)
{
int i = 0;
int j = 0;
int k = 0;
int minDiff = int.MaxValue;
while (i < left.Length && j < right.Length) {
if (left[i] <= right[j]) {
minDiff
= Math.Min(minDiff, right[j] - left[i]);
arr[k] = left[i];
i += 1;
}
else {
minDiff
= Math.Min(minDiff, left[i] - right[j]);
arr[k] = right[j];
j += 1;
}
k += 1;
}
while (i < left.Length) {
arr[k] = left[i];
i += 1;
k += 1;
}
while (j < right.Length) {
arr[k] = right[j];
j += 1;
k += 1;
}
return minDiff;
}
}
Javascript
// JavaScript code
class Solution {
// Function to find minimum difference between any pair
// of elements in an array.
MinimumDifference(arr, n) {
if (n < 2)
return Number.MAX_SAFE_INTEGER;
var mid = Math.floor(n / 2);
var left = arr.slice(0, mid);
var right = arr.slice(mid);
var ls = this.MinimumDifference(left, mid);
var rs = this.MinimumDifference(right, n - mid);
var mg = this.mergeHelper(left, right, arr, mid, n - mid);
return Math.min(mg, Math.min(ls, rs));
}
// Helper function for merge sort
mergeHelper(left, right, arr, n1, n2) {
var i = 0;
var j = 0;
var k = 0;
var minDiff = Number.MAX_SAFE_INTEGER;
while (i < n1 && j < n2) {
if (left[i] <= right[j]) {
minDiff = Math.min(minDiff, right[j] - left[i]);
arr[k] = left[i];
i++;
}
else {
minDiff = Math.min(minDiff, left[i] - right[j]);
arr[k] = right[j];
j++;
}
k++;
}
while (i < n1) {
arr[k] = left[i];
i++;
k++;
}
while (j < n2) {
arr[k] = right[j];
j++;
k++;
}
return minDiff;
}
}
// Code
var arr = [1, 5, 3, 19, 18, 25];
var n = arr.length;
// Function call
var sln = new Solution();
var minDiff = sln.MinimumDifference(arr, n);
console.log("Minimum difference is " + minDiff);
// This code is contributed by Prasad Kandekar(prasad264)
OutputMinimum difference is 1
Time Complexity: O(N * log N) Merge sort algorithm uses (n * log n) complexity.
Auxiliary Space: O(N) In merge sort algorithm all elements are copied into an auxiliary array.
Similar Reads
Find minimum difference between any two elements | Set 2 Given an unsorted array arr[] of size n, the task is to find the minimum difference between any pair in the given array. Input: arr[] = {1, 2, 3, 4} Output: 1 The possible absolute differences are: {1, 2, 3, 1, 2, 1}Input: arr[] = {10, 2, 5, 4} Output: 1 Approach: Traverse through the array and crea
8 min read
Find Maximized difference between two elements for every index of given Arrays Given two arrays A[] and B[] of the same length N. the task is to find a pair (X, Y) for two numbers Ai (number at i index of array A) and Bi(number at i index of array B) such that the value of |X-Y| is maximized for each index and the pair satisfies the following conditions: 1 ⤠X, Y ⤠Bigcd(X, Y)
6 min read
Minimum distance between any two equal elements in an Array Given an array arr, the task is to find the minimum distance between any two same elements in the array. If no such element is found, return -1. Examples: Input: arr = {1, 2, 3, 2, 1} Output: 2 Explanation: There are two matching pairs of values: 1 and 2 in this array. Minimum Distance between two 1
11 min read
Find minimum difference with adjacent elements in Array Given an array A[] of N integers, the task is to find min(A[0], A[1], ..., A[i-1]) - min(A[i+1], A[i+2], ..., A[n-1]) for each i (1 ⤠i ⤠N). Note: If there are no elements at the left or right of i then consider the minimum element towards that part zero. Examples: Input: N = 4, A = {8, 4, 2, 6}Out
12 min read
Maximum difference between first and last indexes of an element in array Given an array of n integers. The task is to find the difference of first and last index of each distinct element so as to maximize the difference. Examples: Input : {2, 1, 3, 4, 2, 1, 5, 1, 7} Output : 6 Element 1 has its first index = 1 and last index = 7 Difference = 7 - 1 = 6 Other elements have
6 min read