本文概述
给定一个数组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)