删除给定索引范围为[L – R]的数组元素

2021年3月11日18:06:35 发表评论 925 次浏览

本文概述

给定一个数组A [], 数组大小为N。任务是删除数组A []的元素(在给定范围L至R中), 两者都是互斥的。

例子:

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

推荐:请尝试以下方法{IDE}首先, 在继续解决方案之前。

一种天真的方法是要删除L到R范围内的元素, 并留出多余的空间。

下面是上述方法的实现:

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
?>

输出如下:

3 5 3 6 3 11 12 3

时间复杂度:

上)

辅助空间:

上)

An

有效的解决方案

无需使用额外的空间。

下面是上述方法的实现:

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
?>

输出如下:

5 8 11 17 10 14

时间复杂度:O(n)

辅助空间:O(1)


木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: