Check whether an array can be fit into another array rearranging the elements in the array
Last Updated :
01 Mar, 2023
Given two arrays A and B of the same size N. Check whether array A can be fit into array B. An array is said to fit into another array if by arranging the elements of both arrays, there exists a solution such that the ith element of the first array is less than or equal to ith element of the second array.
Examples:
Input : A[] = { 7, 5, 3, 2 }, B[] = { 5, 4, 8, 7 }
Output : YES
Rearrange the first array to {3, 2, 7, 5}
Do not rearrange the second array's element.
After rearranging, all Ai<=Bi.
Input : A[] = { 7, 5, 3, 2, 5, 105, 45, 10 }, B[] = { 2, 4, 0, 5, 6, 9, 75, 84 }
Output : NO
Approach: Sort both the arrays and check whether Ai is less than or equal to Bi for all 0 ≤ i ≤ N. If at any ith position Ai is greater than Bi return false, otherwise return true.
Steps to solve the problem:
- Sort array A in non-decreasing order.
- Sort array B in non-decreasing order.
- For each element i from 0 to N-1 do the following:
- If A[i] > B[i], return false.
- If the loop completes without returning false, return true.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
bool checkFittingArrays( int A[], int B[], int N)
{
sort(A, A + N);
sort(B, B + N);
for ( int i = 0; i < N; i++)
if (A[i] > B[i])
return false ;
return true ;
}
int main()
{
int A[] = { 7, 5, 3, 2 };
int B[] = { 5, 4, 8, 7 };
int N = sizeof (A) / sizeof (A[0]);
if (checkFittingArrays(A, B, N))
cout << "YES" ;
else
cout << "NO" ;
return 0;
}
|
Java
import java.io.*;
import java.util.*;
import java.lang.*;
class GFG
{
static boolean checkFittingArrays( int []A,
int []B,
int N)
{
Arrays.sort(A);
Arrays.sort(B);
for ( int i = 0 ; i < N; i++)
if (A[i] > B[i])
return false ;
return true ;
}
public static void main(String[] args)
{
int A[] = { 7 , 5 , 3 , 2 };
int B[] = { 5 , 4 , 8 , 7 };
int N = A.length;
if (checkFittingArrays(A, B, N))
System.out.print( "YES" );
else
System.out.print( "NO" );
}
}
|
Python3
def checkFittingArrays(A, B, N):
A = sorted (A)
B = sorted (B)
for i in range (N):
if (A[i] > B[i]):
return False
return True
A = [ 7 , 5 , 3 , 2 ]
B = [ 5 , 4 , 8 , 7 ]
N = len (A)
if (checkFittingArrays(A, B, N)):
print ( "YES" )
else :
print ( "NO" )
|
C#
using System;
class GFG
{
static bool checkFittingArrays( int []A,
int []B,
int N)
{
Array.Sort(A);
Array.Sort(B);
for ( int i = 0; i < N; i++)
if (A[i] > B[i])
return false ;
return true ;
}
public static void Main ()
{
int []A = {7, 5, 3, 2};
int []B = {5, 4, 8, 7};
int N = A.Length;
if (checkFittingArrays(A, B, N))
Console.WriteLine( "YES" );
else
Console.WriteLine( "NO" );
}
}
|
PHP
<?php
function checkFittingArrays( $A , $B , $N )
{
sort( $A );
sort( $B );
for ( $i = 0; $i < $N ; $i ++)
if ( $A [ $i ] > $B [ $i ])
return false;
return true;
}
$A = array ( 7, 5, 3, 2 );
$B = array ( 5, 4, 8, 7 );
$N = count ( $A );
if (checkFittingArrays( $A , $B , $N ))
echo "YES" ;
else
echo "NO" ;
?>
|
Javascript
<script>
function checkFittingArrays(A, B, N)
{
A.sort( function (a, b){ return a - b;});
B.sort( function (a, b){ return a - b;});
for (let i = 0; i < N; i++)
if (A[i] > B[i])
return false ;
return true ;
}
let A = [7, 5, 3, 2];
let B = [5, 4, 8, 7];
let N = A.length;
if (checkFittingArrays(A, B, N))
document.write( "YES" );
else
document.write( "NO" );
</script>
|
Time Complexity: O(N * logN), where N is the size of the array.
Auxiliary Space: O(1)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...