我需要一个函数int countDifferentNumbers(int v[], int n)
来计算v
带有n
条目的数组包含多少个不同的值。
例:
它应该返回数组的结果3,v = {1, 5, 5, 8, 1, 1}
因为数组仅包含3
不同的值。
到目前为止,代码是这样的:
int countDifferentNumbers(int v[], int n)
{
int counter = 0;
for(int i = 0; i < n; ++i)
{
for(int j = i; j < n; ++j)
{
if(v[i] == v[j + 1])
{
cout << "match" << endl;
counter++;
cout << v[i] << endl;
}
}
}
return counter;
}
对于功能存在问题以及需要如何重新设计的解释,我将不胜感激。
注意:不幸的是,我也没有找到合适的线程。我遇到的所有问题的线程都用Java和Python语言解决了。
首先对数组进行排序v
。如果n >0
那么开始时必须有一个唯一的数字,那么只需将值增加counter
一次即可。然后使用循环检查两个连续的数字是否相同。如果相同,则不做任何其他事情增加的值counter
。
如果您正在用c编写代码,请使用qsort。#include <stdlib.h>
将其添加到标题中。使用qsort()
功能
这是代码:
#include <bits/stdc++.h>
using namespace std;
int countDifferentNumbers(int v[] , int n)
{
int counter = 0;
sort(v, v+ n); // if you are writing code in c then just write a decent sort algorithm.
if (n>0 ){
printf("%d\n", v[0]);
counter ++;
}
for(int i = 0; i < n-1; ++i)
{
if(v[i] == v[i+1]){
continue;
} else {
printf("%d\n", v[i+1]);
counter++;
}
}
return counter;
}
int main()
{
int v[] = {1, 5, 5, 8, 1, 1};
int result = countDifferentNumbers(v,6);
printf("unique number %d", result );
return 0;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句