给定一个数组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
天真的方法是删除具有额外空间的L到R范围内的元素。
下面是上述方法的实现:
C++
// C++ code to delete element
// in given range
#include
using namespace std;
// Delete L to R element
vector deleteElement(int A[], int L, int R, int N)
{
vector 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 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 deleteElement(int A[], int L, int R, int N) {
Vector 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 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 deleteElement(int []A,
int L, int R, int N)
{
List B = new List();
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 res = deleteElement(A, L, R, n);
foreach (int x in res)
{
Console.Write(x + " ");
}
}
}
// This code is contributed by Rajput-Ji
PHP
= $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
?>
C++
// C++ code to delete element
// in given range
#include
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
= $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
?>
输出:
3 5 3 6 3 11 12 3
时间复杂度: O(n)
辅助空间: O(n)
一个高效的解决方案,无需占用额外的空间。
下面是上述方法的实现:
C++
// C++ code to delete element
// in given range
#include
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
= $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)