Delete array element in given index range [L – R]

Given an array A[] and the size of an array is N. The task is to delete elements of array A[] that are in the given range L to R both are exclusive.

Examples: 

Input : N = 12
        A[] = { 3, 5, 3, 4, 9, 3, 1, 6, 3, 11, 12, 3}
        L = 2
        R = 7
Output : 3 5 3 6 3 11 12 3 
since A[2] = 3 but this is exclude 
A[7] =  6 this also exclude 

Input : N = 10
        A[] ={ 5, 8, 11, 15, 26, 14, 19, 17, 10, 14 }
        L = 4
        R = 6
Output :5 8 11 15 26 19 17 10 14 

A naive approach is to delete elements in the range L to R with extra space.

Below is the implementation of the above approach: 

C




// C++ code to delete element
// in given range
#include <stdio.h>
#include <stdlib.h>
 
// Delete L to R element
void deleteElement(int A[], int L, int R, int N,int *size,int *B)
{
      int index=0;
 
    for (int i = 0; i < N; i++)
        if (i <= L || i >= R)
           B[index++]=A[i];       
     
      *size=index;
}
 
// main Driver
int main()
{
    int A[] = { 3, 5, 3, 4, 9, 3, 1, 6, 3, 11, 12, 3 };
    int L = 2, R = 7;
    int n = sizeof(A) / sizeof(A[0]);
     
    int B[n-abs(L-R)];
    int size=0;
     
    deleteElement(A, L, R, n,&size,B);
     
      for(int i=0;i<size;i++)
        printf("%d ",B[i]);
     
  return 0;
}


C++




// C++ code to delete element
// in given range
#include <bits/stdc++.h>
using namespace std;
 
// Delete L to R element
vector<int> deleteElement(int A[], int L, int R, int N)
{
    vector<int> B;
 
    for (int i = 0; i < N; i++)
        if (i <= L || i >= R)
           B.push_back(A[i]);       
     
    return B;
}
 
// main Driver
int main()
{
    int A[] = { 3, 5, 3, 4, 9, 3, 1, 6, 3, 11, 12, 3 };
    int L = 2, R = 7;
    int n = sizeof(A) / sizeof(A[0]);
    vector<int> res = deleteElement(A, L, R, n);
    for (auto x : res)
        cout << x << " ";
    return 0;
}


Java




import java.util.Vector;
 
// Java code to delete element
// in given range
class GFG {
// Delete L to R element
 
    static Vector<Integer> deleteElement(int A[], int L, int R, int N) {
        Vector<Integer> B = new Vector<>();
 
        for (int i = 0; i < N; i++) {
            if (i <= L || i >= R) {
                B.add(A[i]);
            }
        }
 
        return B;
    }
 
// main Driver
    public static void main(String[] args) {
        int A[] = {3, 5, 3, 4, 9, 3, 1, 6, 3, 11, 12, 3};
        int L = 2, R = 7;
        int n = A.length;
        Vector<Integer> res = deleteElement(A, L, R, n);
        for (Integer x : res) {
            System.out.print(x + " ");
        }
    }
}
// This code is contributed by PrinciRaj1992


Python3




# Python 3 code to delete element
# in given range
 
# Delete L to R element
def deleteElement(A, L, R, N):
    B = []
 
    for i in range(0, N, 1):
        if (i <= L or i >= R):
            B.append(A[i])
     
    return B
 
# Driver Code
if __name__ == '__main__':
    A = [3, 5, 3, 4, 9, 3, 1,
             6, 3, 11, 12, 3]
    L = 2
    R = 7
    n = len(A)
    res = deleteElement(A, L, R, n)
    for i in range(len(res)):
        print(res[i], end = " ")
 
# THis code is implemented by
# Surendra_Gangwar


C#




// C# code to delete element
// in given range
using System;
using System.Collections.Generic;
 
class GFG
{
     
    // Delete L to R element
    static List<int> deleteElement(int []A,
                        int L, int R, int N)
    {
        List<int> B = new List<int>();
        for (int i = 0; i < N; i++)
        {
            if (i <= L || i >= R)
            {
                B.Add(A[i]);
            }
        }
        return B;
    }
 
    // Driver code
    public static void Main()
    {
        int []A = {3, 5, 3, 4, 9, 3, 1, 6,
                            3, 11, 12, 3};
        int L = 2, R = 7;
        int n = A.Length;
        List<int> res = deleteElement(A, L, R, n);
        foreach (int x in res)
        {
            Console.Write(x + " ");
        }
    }
}
 
// This code is contributed by Rajput-Ji


PHP




<?php
// PHP code to delete element
// in given range
 
// Delete L to R element
function deleteElement($A, $L, $R, $N)
{
    $B = array();
 
    for ($i = 0; $i < $N; $i++)
    {
        if ($i <= $L or $i >= $R)
            $B[] = $A[$i];
    }
    return $B;
}
 
// Driver Code
$A = array(3, 5, 3, 4, 9, 3, 1,
              6, 3, 11, 12, 3);
$L = 2;
$R = 7;
$n = count($A);
$res = deleteElement($A, $L, $R, $n);
for ($i = 0; $i < count($res); $i++)
echo "$res[$i] ";
 
// This code is implemented by
// Srathore
?>


Javascript




<script>
    // Javascript code to delete element in given range
     
    function deleteElement(A, L, R, N) {
        let B = [];
  
        for (let i = 0; i < N; i++) {
            if (i <= L || i >= R) {
                B.push(A[i]);
            }
        }
  
        return B;
    }
     
    let A = [3, 5, 3, 4, 9, 3, 1, 6, 3, 11, 12, 3];
    let L = 2, R = 7;
    let n = A.length;
    let res = deleteElement(A, L, R, n);
    for(let i = 0; i < res.length; i++)
      document.write(res[i] + " ");
 
// This code is contributed by divyeshrabadiya07.
</script>


Output

3 5 3 6 3 11 12 3 

Complexity Analysis:

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

An efficient solution without using extra space. 

Below is the implementation of the above approach:

C




// C code to delete element
// in given range
#include <stdio.h>
 
// Delete L to R elements
int deleteElement(int A[], int L, int R, int N)
{
    int i, j = 0;
    for (i = 0; i < N; i++) {
        if (i <= L || i >= R) {
            A[j] = A[i];
            j++;
        }
    }
 
    // Return size of Array
    // after delete element
    return j;
}
 
// Driver Code
int main()
{
    int A[] = { 5, 8, 11, 15, 26, 14, 19, 17, 10, 14 };
    int L = 2, R = 7;
    int n = sizeof(A) / sizeof(A[0]);
    int res_size = deleteElement(A, L, R, n);
    for (int i = 0; i < res_size; i++)
        printf("%d ", A[i]);
    return 0;
}


C++




// C++ code to delete element
// in given range
#include <bits/stdc++.h>
using namespace std;
 
// Delete L to R elements
int deleteElement(int A[], int L, int R, int N)
{
    int i, j = 0;
    for (i = 0; i < N; i++) {
        if (i <= L || i >= R) {
            A[j] = A[i];
            j++;
        }
    }
 
    // Return size of Array
    // after delete element
    return j;
}
 
// main Driver
int main()
{
    int A[] = { 5, 8, 11, 15, 26, 14, 19, 17, 10, 14 };
    int L = 2, R = 7;
    int n = sizeof(A) / sizeof(A[0]);
    int res_size = deleteElement(A, L, R, n);
    for (int i = 0; i < res_size; i++)
        cout << A[i] << " ";
    return 0;
}


Java




// Java code to delete element
// in given range
class GFG
{
 
// Delete L to R elements
static int deleteElement(int A[], int L,
                         int R, int N)
{
    int i, j = 0;
    for (i = 0; i < N; i++)
    {
        if (i <= L || i >= R)
        {
            A[j] = A[i];
            j++;
        }
    }
 
    // Return size of Array
    // after delete element
    return j;
}
 
// Driver Code
public static void main(String args[])
{
    int A[] = new int[] { 5, 8, 11, 15, 26,
                        14, 19, 17, 10, 14 };
    int L = 2, R = 7;
    int n = A.length;
    int res_size = deleteElement(A, L, R, n);
    for (int i = 0; i < res_size; i++)
    System.out.print(A[i] + " ");
}
}
 
// This code is contributed
// by Kirti_Mangal


Python 3




# Python 3 program  to delete element
# in given range
 
# Function to delete L to R element
def deleteElement(A, L, R, N) :
 
    j = 0
    for i in range(N) :
        if i <= L or i >= R :
            A[j] = A[i]
            j += 1
 
    # Return size of Array
    # after delete element
    return j
     
# Driver Code
if __name__ == "__main__" :
 
    A = [5, 8, 11, 15, 26, 14, 19, 17, 10, 14]
    L, R = 2,7
 
    n = len(A)
    res_size = deleteElement(A, L, R, n)
 
    for i in range(res_size) :
        print(A[i],end = " ")
 
# This code is contributed by ANKITRAI1


C#




// C# code to delete element
// in given range
using System;
 
class GFG
{
 
// Delete L to R elements
static int deleteElement(int []A, int L,
                         int R, int N)
{
    int i, j = 0;
    for (i = 0; i < N; i++)
    {
        if (i <= L || i >= R)
        {
            A[j] = A[i];
            j++;
        }
    }
 
    // Return size of Array
    // after delete element
    return j;
}
 
// Driver Code
public static void Main()
{
    int []A = new int[] { 5, 8, 11, 15, 26,
                         14, 19, 17, 10, 14 };
    int L = 2, R = 7;
    int n = A.Length;
    int res_size = deleteElement(A, L, R, n);
    for (int i = 0; i < res_size; i++)
        Console.Write(A[i] + " ");
}
}
 
// This code is contributed by 29AjayKumar


PHP




<?php
// PHP code to delete element
// in given range
 
// Delete L to R elements
function deleteElement(&$A, $L, $R, $N)
{
    $i= 0;
    $j = 0;
    for ($i = 0; $i < $N; $i++)
    {
        if ($i <= $L || $i >= $R)
        {
            $A[$j] = $A[$i];
            $j++;
        }
    }
 
    // Return size of Array
    // after delete element
    return $j;
}
 
// Driver Code
$A = array(5, 8, 11, 15, 26,
           14, 19, 17, 10, 14);
$L = 2;
$R = 7;
$n = sizeof($A);
$res_size = deleteElement($A, $L, $R, $n);
for ($i = 0; $i < $res_size; $i++)
{
    echo ($A[$i]);
    echo (" ");
}
 
// This code is contributed
// by Shivi_Aggarwal
?>


Javascript




<script>
 
    // JavaScript code to delete element in given range
     
    // Delete L to R elements
    function deleteElement(A, L, R, N)
    {
        let i, j = 0;
        for (i = 0; i < N; i++) {
            if (i <= L || i >= R) {
                A[j] = A[i];
                j++;
            }
        }
 
        // Return size of Array
        // after delete element
        return j;
    }
     
    let A = [ 5, 8, 11, 15, 26, 14, 19, 17, 10, 14 ];
    let L = 2, R = 7;
    let n = A.length;
    let res_size = deleteElement(A, L, R, n);
    for (let i = 0; i < res_size; i++)
        document.write(A[i] + " ");
 
</script>


Output

5 8 11 17 10 14 

Complexity Analysis:

  • Time Complexity: O(n) 
  • Auxiliary Space : O(1) 
Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Check Also
Close
Back to top button