Problem
Given an unsorted array, find the minimum difference between any pair in a given array and print the array.
Sample Input
[1, 2, 2, 1]
Sample Output
1 1
Approach
Sort array in ascending order. Initialize the difference as
INT_MAX
. Compare all adjacent pairs in a sorted array and keep track of the minimum difference and update the pair with minimum difference. This approach takes O(NlogN) time.
C++ Programming
#include <bits/stdc++.h> using namespace std; int f, s; void solve(int arr[], int n) { sort(arr, arr+n); int diff = INT_MAX; for (int i=0; i<n-1; i++) if (arr[i+1] - arr[i] < diff) { f = arr[i]; s = arr[i+1]; diff = arr[i+1] - arr[i]; } } int main() { int arr[] = {1, 2, 3, 4}; int n = sizeof(arr)/sizeof(arr[0]); solve(arr, n); cout<<f<<" "<<s; }
Output
1 2
Python Programming
f=-1 s=-1 def solve(arr, n): arr = sorted(arr) diff = 10**9 for i in range(n-1): if arr[i+1] - arr[i] < diff: diff = arr[i+1] - arr[i] f=arr[i+1] s=arr[i] print(f, end=" ") print(s) arr = [1, 2, 3, 4] n = len(arr) solve(arr,n)
Output
2 1
Java Programming
import java.util.Arrays; class Solution { static void solve(int[] arr, int n) { Arrays.sort(arr); int diff = Integer.MAX_VALUE; int f=-1,s=-1; for (int i=0; i<n-1; i++) if (arr[i+1] - arr[i] < diff){ diff = arr[i+1] - arr[i]; f=arr[i+1]; s=arr[i]; } System.out.println(f); System.out.println(s); } public static void main(String[] args) { int arr[] = new int[]{1, 2, 3}; solve(arr,3); } }
Output
2 1
People are also reading:
- Construct a tree from Inorder and Level order traversals
- Print all subarrays with 0 sum
- Rearrange an array in maximum minimum form
- Rod Cutting Problem
- Shuffle list in Python using random.shuffle() function
- Longest Consecutive Sequence in Linear time
- Count subarrays with given XOR
- Minimum Edit Distance
- Majority Element
- Rearrange an array such that arr[i] = i
Leave a Comment on this Post