C++程序 删除数组中所有出现的元素

C++程序 删除数组中所有出现的元素

本文将介绍如何使用C++程序删除数组中所有元素的出现。下面是一些示例:

输入: {1、4、3、6、8、3、9、10、3、3、7}

目标元素:3

输出: {1、4、6、8、9、10、7}

输入: {12、11、10、17、12、4、7、12}

目标元素:12

输出: {11、10、17、4、7}

有两种方法可以在C++中删除数组中所有元素的出现:

  1. 暴力法。
  2. 优化方法(原地移位)。

让我们开始逐个讨论这些方法。

1. 暴力法

在这种方法中,创建另一个数组并复制除目标元素以外的所有元素。以下是使用暴力方法删除数组中所有元素的C++程序:

// C++程序:删除所有出现的元素
#include <iostream>
using namespace std;
 
void remove_all_occurrence(int arr[],
                          int target,
                          int n)
{
  int cnt = 0;
   
  // 计算目标元素的所有出现次数
  for(int i = 0; i < n; i++)
  {
    if(arr[i] == target)
      cnt++;
  }
       
  // 创建新数组,大小为原数组大小减去目标元素的数量
  int new_arr[n - cnt];
  int ind = 0;
  for(int i = 0; i < n; i++)
  {
    if(arr[i] != target)
    {
      new_arr[ind] = arr[i];
      ind++;
    }
  }
       
  // 输出新数组
  int m = (sizeof(new_arr) /
           sizeof(new_arr[0]));
  for(int i = 0; i < m; i++)
  {
    cout << new_arr[i] << " ";
  }
  return;
}
 
// 主函数
int main()
{
  int arr[]={1、4、3、6、8、3、9、10、3、3、7};
  int target = 3;
  int n = (sizeof(arr) /
           sizeof(arr[0]));
  remove_all_occurrence(arr, target, n);
  return 0;
}  

输出

1 4 6 8 9 10 7 

时间复杂度: O(n)

空间复杂度: O(n)

2.优化方法(原地移位)

在此方法中,将非目标元素移至左侧。

  1. 检查当前元素是否为目标元素。
  2. 如果它是目标元素,则增加计数器 cnt
  3. 在此元素之后,所有的非目标元素将以 (n-cnt) 的间隔向左移动。

以下是使用优化方法删除数组中所有元素的C++程序:

// C++程序:使用优化方法删除数组中所有元素的出现
#include <iostream>
using namespace std;
 
void remove_all_occurrence(int arr[],
                          int target,
                          int n)
{
  int cnt = 0;
   
  // 将非目标元素移至左侧
  for(int i = 0; i < n; i++)
  {
    if(arr[i] != target)
    {
      arr[i - cnt] = arr[i];
    }
    else
    {
      cnt++;
    }
  }
   
  // 输出数组
  for(int i = 0; i < (n - cnt); i++)
  {
    cout << arr[i] << " ";
  }
  return; 
}
 
// 主函数
int main()
{
  int arr[] = {1、4、3、6、8、3、9、10、3、3、7};
  int target = 3;
  int n = (sizeof(arr) /
           sizeof(arr[0]));
  remove_all_occurrence(arr, target, n);
  return 0;
}  

输出

1 4 6 8 9 10 7 
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 示例