Create Target Array in the Given Order

Create a target array under the following rules:
  • Initially, the target array is empty.
  • From left to right read nums[i] and index[i], insert at index index[i] the value nums[i] in target array.
  • Repeat the previous step until there are no elements to read in nums and index.

Example:

Input:  nums={0,1,2,3,4}, index={0,1,2,2,1}
Output: newArray={0,4,1,3,2}

Approach

Java


import java.util.Arrays;
import java.util.LinkedList;

public class CreateTargetArrayInGivenOrder {
    public static void main(String[] args) {
        int nums[] = { 01234 };
        int index[] = { 01221 };
        int target[] = createTargetArray(nums, index);
        System.out.println(Arrays.toString(target));
    }

    private static int[] createTargetArray(int[] numsint[] index) {
        LinkedList<Integerlist = new LinkedList<Integer>();
        for (int i = 0; i < nums.length; i++) {
            list.add(index[i], nums[i]);
        }
        int[] targetArray = list.stream().mapToInt(Integer::intValue).toArray();
        return targetArray;
    }
}

C++

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

//function to create the array 
vector<intcreateTargetArray(vector<int>& nums
    vector<int>& index
{
        vector<inttarget;
        int n=nums.size();
        if(n==0)
               return target;
        for(int i=0;i<n;i++)
               target.insert(target.begin()+index[i],nums[i]);
        return target;
}
int main()
{
   vector<intnums {0,1,2,3,4};
   vector<intindex ={0,1,2,2,1};
   vector<intnewArray=createTargetArray(nums,index);
   for(int i=0;i<newArray.size();i++)
      cout<<newArray[i]<<" ";
   return 0;
}


No comments:

Post a Comment