比较数组中的三个数字

标签 c arrays element

我正在寻找简洁明了的方法来查看数组中是否存在三个相等的数字。

现在我有这个:

for (int i = 0; i < nr ; i++)
{
    if(a[i] == 1){one++;}
    else if(a[i] == 2){two++;}
    else if(a[i] == 3){three++;}
    else if(a[i] == 4){four++;}
    else if(a[i] == 5){five++;}
    else if(a[i] == 6){six++;}
}

if(one >= 3){
    printf("Tre tal finns i ettor, 3p\n");
}else if(two >= 3){
    printf("Tre tal finns i tvår, 6p\n");
}else if(three >= 3){
    printf("Tre tal finns i treor, 9p\n");
}else if(four >= 3){
    printf("Tre tal finns i fyror, 12p\n");
}else if(five >= 3){
    printf("Tre tal finns i femmor, 15p\n");
}else if(six >= 3){
    printf("Tre tal finns i sexor, 18p\n");
}

其中 a(整数)是一个包含 5 个元素(包含元素 1-6)的数组,“nr”是一个用于跟踪数组长度的变量。

如果有人有更好更好的方法来做到这一点,请回复。

最佳答案

将其概括为 histogram ,基本上做第一步counting sort :

int histogram[n]; //variable length array are fine in c99, if using older c - malloc
for (int i = 0; i < n; i++) histogram[i] = 0; //init
for (i = 0; i < nr; i++)
   histogram[a[i]]++;
for (i = 0; i < n; i++)
   if (histogram[i] >= 3) //found it
//....    

关于比较数组中的三个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19378067/

相关文章:

php - 查询 MySQL 表,存储在 PHP 数组中,然后从数组中返回单个值

c++ - 仅删除动态分配的结构对象数组的特定元素

javascript - 按类名查找元素

javascript - 如何将primeng确认框消息打破到单独的行?

c - 在c中用括号连续打印

在多线程环境中变量可以是静态的还是易失的

c - 当有两个独立的 for 循环时如何找到大 O

ios - 更新用户界面 Swift

javascript - CSS 悬停在两个不同的元素上并影响一个相同的元素

c - 在 C 中使用多个 For 循环