C++ 通过最小增量使排序数组的元素唯一
本文的目标是通过最小增量使排好序的数组中的元素唯一。首先,提供一个已排序的整数数组。通过增加值并保持数组总和尽可能低,我们必须使数组元素之间是离散的。作为输出,我们必须显示可达到的最小和作为结果。
问题陈述
通过最小增量使已排序的数组元素唯一。
方法
给定一个整数数组。
首先,我们检查给定的整数数组中的元素是否是不同的。也就是说,我们确保给定的整数数组中没有元素重复超过一次。如果所有元素都是不同的,我们将所有元素加起来并返回该数组中元素的和作为输出。假设如果有任何数字重复超过一次,则我们忽略重复并仅考虑元素一次,无论它重复多少次。我们将元素加起来并返回总和作为结果。
示例1
考虑整数数组a={1,2,3}
由于给定数组中的三个元素1、2和3都是唯一的,也就是说,该整数数组中没有元素重复超过一次,我们简单地将所有元素1、2和3相加,并将和6打印为输出。
也就是说,这里我们得到的输出是1+2+3=6。
示例2
考虑整数数组a={1,2,2,3}
在这个整数数组中,元素1和3只出现了一次,但元素2在这里重复了两次。按照规则,我们必须忽略重复,只考虑元素2一次。也就是说,我们将1、2和3相加,并将和6打印为输出。
也就是说,这里我们得到的输出是1+2+3=6。
算法
下面给出了通过最小增量使排序数组中的元素唯一的算法。
步骤 1 :开始
步骤 2 :定义具有值的整数数组。
步骤 3 :设置数组的大小。
步骤 4 :将和和前一个元素设置为数组的第一个元素。
步骤 5 :运行循环,将当前元素设置为数组的第二个元素。
步骤 6 :如果前一个元素大于或等于当前元素,则将当前元素增加到前一个元素加1。
步骤 7 :将和设置为和加上当前元素。
步骤 8 :将前一个元素设置为当前元素。
步骤 9 :重复循环。
步骤 10 :打印总和。
步骤 11:停止
给出的C程序,通过最小增量使排序整数数组的元素不重复。
示例
#include <stdio.h>
int main(){
int a[]={1,2,2,3}; //input the array elements
int n = 4; //set the size of the array
int sum = a[0]; //set sum to 0
int prev = a[0]; //set prev to 0
//iterate the array and check for the condition
for( int i = 1; i < n; i++ ) {
int curr = a[i];
if( prev >= curr ) {
curr = prev+1;
}
sum += curr;
prev = curr;
}
printf("%d",sum); // print the result obtained
}
输出
执行后,会产生以下输出:
10
结论
同样,我们可以通过最小的递增值使得有序数组中的元素不同。
在本文中解决了通过最小递增值使有序数组中的元素不同的挑战。提供了C编程代码以及通过最小递增值使得有序数组中的元素不同的算法。