The problem “Find whether an array is subset of another array” states that you are given two arrays arra1[] and array2[]. The arrays given are in an unsorted manner. Your task is to find whether the array2[] is a subset of array1[].

Table of Contents

## Example

arr1= [1,4,5,7,8,2] arr2= [1,7,2,4]

arr2 [] is a subset of arr1 [].

arr1= [21,4,5,2,18,3] arr2= [1,4,2,3]

arr2 [] is not a subset of arr1 [].

## Algorithm

- Open a nested loop.
- Set i to 0, j to 0.
- While
**i**is less than the length of array2[].- While
**j**is less than the length of array1[].- If arr2[i] is equal to arr[j], then break.

- While
- If
**j**is equal to m, return false. - Return true.

### Explanation

Our task is to find whether the array second is a subset of array1. So our main idea is to use the nested loop and check each element and array2’s every element is found in array1, which means array2 is a subset of array1.

Let us take an example as our input in array1 and array2

**Example**

arr1[] = {11, 1, 13, 21, 3, 7}; arr2[] = {11, 3, 7, 1};

Starting with the 0th index of array2, we are going to check if the 0th index of arrays2 finds a similar number in array1[i], and yes it found it as 11. So we are going to break the loop and do i++.

Starting with the 1st index of array2[], we are going to check if the 1st index of arrays2 finds a similar number in array1[i], and yes it found it as 3. So we are going to break the loop and do i++.

Starting with the 2nd index of array2[], we are going to check if the 2nd index of arrays2 finds a similar number in array1[i] and it found it as 7. So we are going to break the loop and do i++.

Starting with the 1st index of array2[], we are going to check if the 1st index of arrays2 finds a similar number in array1[i] and 1 found it. So we are going to break the loop and do i++.

And about if condition which is represented as if ( j = = m ) this means, if in any of the iteration if any of array2’s element is not found in array1[], means it comes out of the loop without breaking it means ‘j’ with a value equal to the length of the array1[] that means we didn’t find one of the elements similar in array1[] and we return false because subset consists all of the element of the given set and we didn’t find one.

## Code

### C++ code to find whether an array is subset of another array

#include <iostream> using namespace std; bool isSubset(int arr1[], int arr2[], int l1, int l2) { int i,j; for(i=0; i<l2; i++) { for(j=0; j<l1; j++) { if(arr2[i]==arr1[j]) break; } if(j==l1) return false; } return true; } int main() { int arr1[] = {1, 2, 3, 4, 5, 6}; int arr2[] = {1, 3, 5}; int l1=sizeof(arr1)/sizeof(arr1[0]); int l2=sizeof(arr2)/sizeof(arr2[0]); if(isSubset(arr1,arr2,l1,l2)) { cout<<"arr2[] is a subset of arr1[]"; } else { cout <<"arr2[] is not a subset of arr1[]"<<endl; } return 0; }

arr2[] is a subset of arr1[]

### Java code to find whether an array is subset of another array

class isArraySubset { public static boolean isSubset(int arr1[],int arr2[], int l1, int l2) { int i = 0; int j = 0; for (i = 0; i < l2; i++) { for (j = 0; j < l1; j++) { if(arr2[i] == arr1[j]) { break; } } if (j == l1) return false; } return true; } public static void main(String args[]) { int arr1[] = {1, 2, 3, 4, 5, 6}; int arr2[] = {1, 3, 5}; int l1 = arr1.length; int l2 = arr2.length; if(isSubset(arr1, arr2, l1, l2)) { System.out.println("arr2[] is a subset of arr1[]"); } else { System.out.println("arr2[] is not a subset of arr1[]"); } } }

arr2[] is a subset of arr1[]

## Complexity Analysis

### Time Complexity

**O(m*n)** where **“m”** is the size of arr1 and **“n”** is the size of arr2. Because we have used nested loops, making the time complexity polynomial.

### Space Complexity

**O(1), **because we have not used any extra array/vector.