Replace array elements in given range from another array elements

Last Updated :

Given an array A[] and size of array is N. The task is to replace element of array A[] are in given range L to R both are included. Element replace by one another Array B[] size of N.

Examples:

Input : N = 8
        A[] = { 3, 5, 3, 4, 9, 3, 1, 6 }
        B[] = { 5, 2, 7, 0, 1, 6, 4, 10 }
        L = 2
        R = 7
Output : 3 5 7 0 1 6 4 10
Since A[2] = 3 but this is replace by B[2] = 7
A[3] = 4 replace by B[3] = 0, A[4] = 9 replace by B[4] = 1,
A[5] = 3 replace by B[5] = 6,A[6] = 1 replace by B[6] = 4  
A[7] =  6 replace by B[7] = 10 

Input : N = 10
        A[] ={ 5, 8, 11, 15, 26, 14, 19, 17, 10, 14 }
        B[] = { 8, 6, 9, 2, 4, 6, 41, 32, 45, 78}
        L = 4
        R = 6
Output :5 8 11 15 4 6 41 17 10 14

Naive Approach:

A naive approach is to replace element in range L to R with extra space. Below is the implementation of the above approach.

Implementation in C++:

// C++ code to replace elements in a given range
#include <bits/stdc++.h>
using namespace std;

// Replace elements from L to R in A with elements from B
vector<int> replaceElements(int A[], int B[], int L, int R, int N) {
    vector<int> C;
    
    for (int i = 0; i < L; i++)
        C.push_back(A[i]);
    
    for (int i = L; i <= R; i++)
        C.push_back(B[i]);
    
    for (int i = R + 1; i < N; i++)
        C.push_back(A[i]);
    
    return C;
}

// Main Driver
int main() {
    int A[] = {5, 8, 11, 15, 26, 14, 19, 17, 10, 14};
    int B[] = {8, 6, 9, 2, 4, 6, 41, 32, 45, 78};
    int L = 4, R = 6;
    int N = sizeof(A) / sizeof(A[0]);
    vector<int> res = replaceElements(A, B, L, R, N);
    
    for (auto x : res)
        cout << x << " ";
    
    return 0;
}

Output :

5 8 11 15 4 6 41 17 10 14

Time Complexity : O(n)
Auxiliary Space : O(n)

Efficient Approach :

An efficient solution without using extra space. Below is the implementation of the above approach.

Implementation in C++:

// C++ code to replace elements in a given range
#include <bits/stdc++.h>
using namespace std;

int A[] = {5, 8, 11, 15, 26, 14, 19, 17, 10, 14};

// Replace elements from L to R in A with elements from B
void replaceElement(int B[], int L, int R, int N) {
    int j = 0;
    for (int i = L; i <= R; i++) {
        A[i] = B[j];
        j++;
    }
}

// Print array
void printArray(int N) {
    for (int i = 0; i < N; i++)
        cout << A[i] << " ";
    cout << endl;
}

// main Driver
int main() {
    int B[] = {8, 6, 9, 2, 4, 6, 41, 32, 45, 78};
    int L = 4, R = 6;
    int N = sizeof(A) / sizeof(A[0]);
    replaceElement(B, L, R, N);
    printArray(N);
    return 0;
}
5 8 11 15 4 6 41 17 10 14

Time Complexity: O(n)
Auxiliary Space : O(1)

Comment
Next Article
Mithlesh Upadhyay Published 28 Sep, 2023 · 3 min read

Mithlesh Upadhyay is a Computer Science and AI expert from Madhya Pradesh with strong academic background (BE in CSE and M.Tech in AI) and over six years of experience in technical content development. He has contributed tech articles, led teams, and worked in Full Stack Development and Data Science. He founded the w3colleges.org portal for learning resources.

Article Tags :

Similar Reads