Make Two Arrays Equal by Reversing Sub-arrays

Given two integer arrays of equal length target and arr.
In one step, you can select any non-empty sub-array of arr and reverse it. You are allowed to make any number of steps.
Return True if you can make arr equal to target, or False otherwise.

Example 1:

Input: target = [1,2,3,4], arr = [2,4,1,3]
Output: true

Approach

Java

import java.util.Arrays;

public class MakeTwoArrays {
    public static void main(String[] args) {
        int[] target = { 1234 }, arr = { 2413 };
        System.out.println(canBeEqual(target, arr));
    }

    static boolean canBeEqual(int[] targetint[] arr) {
        int n = target.length, m = arr.length;

        // if length of both array is different
        // then return false
        if (n != m)
            return false;

        // sort both the arrays
        Arrays.sort(target);
        Arrays.sort(arr);
        for (int i = 0; i < n; i++) {

            // if current value of both array is not same then
            // return false
            if (target[i] != arr[i]) {
                return false;
            }
        }
        return true;
    }
}

C++

#include <bits/stdc++.h>
using namespace std;

bool canBeEqual(vector<int&targetvector<int&arr)
{
    int n = target.size(), m = arr.size();

    //if length of both array is different
    //then return false
    if (n != m)
        return false;

    //sort both the arrays
    sort(target.begin(), target.end());
    sort(arr.begin(), arr.end());
    for (int i = 0i < ni++)
    {

        //if current value of both array is not same then
        //return false
        if (target[i] != arr[i])
        {
            return false;
        }
    }
    return true;
}

int main()
{
    vector<inttarget = {1234}, arr = {2413};
    if (canBeEqual(targetarr))
        cout << "true";
    else
        cout << "false";
    return 0;
}


No comments:

Post a Comment