计算C ++中数组中的不同元素

我们得到了一个任意大小的未排序数组,其中包含重复元素,并且任务是计算数组中不同元素的数量。

数组是一种数据结构,可以存储相同类型的元素的固定大小的顺序集合。数组用于存储数据集合,但是将数组视为相同类型的变量集合通常会更有用。

例如

Input− int arr[] = {1, 1, 2, 3, 3, 4, 4}Output − count is 4

解释-在给定的数组中,有4个不同的元素,分别是1、2、3、4,但是数组的大小为7,因为它包含重复的元素,我们的任务是删除重复项,然后对数组元素进行计数。

Input − int arr[] = {1, 2, 3, 4, 5, 5, 5, 5}Output − count is 5

Explanation − In the given array there are 5 distinct elements and those are 1, 2, 3, 4 and 5 but the size of array is 8 as it contains repetitive elements and our task was to remove the duplicates and then count the array elements.

Approach used in the below program is as follows

Using sort function()

  • Create an array of let’s say, arr[]

  • Calculate the length of an array using the length() function that will return an

    integer value as per the elements in an array.

  • Call the sort function and pass the array and the size of an array as a parameter.

  • Take a temporary variable that will store the count of distinct elements.

  • Start a loop for with i to 0 till i is less than the size of an array

  • Inside the loop, run while i < size-1 and arr[i] = arr[i+1]

  • Inside the while, increment the value of i

  • 在里面,增加count的值

  • 返回计数

  • 打印结果。

没有排序

  • 创建一个数组,比如说arr []

  • 使用length()函数将根据数组中的元素返回整数值来计算数组的长度。

  • 取一个临时变量,它将存储不同元素的计数。

  • 从i到1开始循环,直到i小于数组的大小

  • 在循环内,将j设置为0并开始另一个循环,其中j为0且j小于i并递增j wth 1

  • 在此循环中,检查arr [i] = arr [j]然后中断

  • 在此循环中,检查i = j,然后将计数加1

  • 返回计数

  • 打印结果

示例

带排序

#include <algorithm>

#include <iostream>

using namespace std;

int distinct_elements(int arr[], int n){

   //排序数组

   sort(arr, arr + n);

   //遍历排序的数组

   int count = 0;

   for (int i = 0; i < n; i++){

      //找到重复项时移动索引

      while (i < n - 1 && arr[i] == arr[i + 1]){

         i++;

      }

      count++;

   }

   return count;

}

//主要功能

int main(){

   int arr[] = { 3, 6, 5, 8, 2, 3, 4 };

   int n = sizeof(arr) / sizeof(arr[0]);

   cout <<"count is "<<distinct_elements(arr, n);

   return 0;

}

输出结果

如果运行上面的代码,我们将获得以下输出-

count is 6

示例

不排序

#include <iostream>

using namespace std;

int countDistinct(int a[], int size){

   int i, j, count = 1;

   for (i = 1; i < size; i++){

      for (j = 0; j < i; j++){

         if (a[i] == a[j]){

            break;

         }

      }

      if (i == j){

         count++;

      }

   }

   return count;

}

//主要功能

int main(){

   int a[] = { 3, 6, 5, 8, 2, 3, 4 };

   int size = sizeof(a) / sizeof(a[0]);

   cout << "count is "<<countDistinct(a, size);

   return 0;

}

输出结果

如果运行上面的代码,我们将获得以下输出-

count is 6

以上是 计算C ++中数组中的不同元素 的全部内容, 来源链接: utcz.com/z/355014.html

回到顶部