📌  相关文章
📜  删除给定索引范围[L – R]中的数组元素

📅  最后修改于: 2021-04-29 12:46:44             🧑  作者: Mango

给定一个数组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)