计算数组中的重复元素.....
输入为{1,1,1,1,2,2,2,3,3,4}
输出
1=4
2=3
3=2
4=1
答案 0 :(得分:3)
prev = input[0];
count = 1;
for (i = 1; i < ARRAYSIZE; i++)
{
if (input[i] == prev) count++;
else
{
printf("%d=%d ", prev, count);
prev = input[i];
count = 1;
}
}
// Printing the last element
printf("%d=%d ", prev, count);
答案 1 :(得分:2)
如果它已经排序,可能会有更快的方式
将列表拆分为两半。以这种方式处理每个部分:测试第一个和最后一个nubmer。如果它们是相同的,你知道结果。如果不一样的话,将它分成中间并再次递归每一半。
使用相同数字的长跑,这将是有效的。如果一个部分很小,它应该恢复到一个一个方法。您可以在随机点对数据进行采样,测试s,s + 1,以获得一个数字从其前任增加的时间的百分比。数字越大,您应该越早转换为逐个方法。
此方法也可并行化。
答案 2 :(得分:1)
似乎数组已排序(根据示例)。如果是这样,你只需要选择第一个元素并遍历数组,直到找到一个不同的值。在这个过程中,你可以在循环中设置一个计数器来计算出现的次数。
然后选择找到的不同值而不是第一个元素并重复该过程。
答案 3 :(得分:1)
如果值的范围很小,则可以使用另一个数组来保存每个元素的计数,非常类似于counting sort。如果值范围很大,则需要hash table。
答案 4 :(得分:0)
一个好方法是遍历数组中的元素并计算每个元素中有多少元素。完成后,打印出你得到的计数。
答案 5 :(得分:0)
void count_elements(int * pArray, long nElements)
{
int * pStart;
for ( pStart = pArray++; nElements > 1; nElements--, pArray++ )
{
if ( *pStart != *pArray )
{
printf("%i = %u ", *pStart, (pArray - pStart));
pStart = pArray;
}
}
printf("%i = %u ", *pStart, (pArray - pStart));
}
答案 6 :(得分:0)
简单的解释说明。
//计算每个元素 创建一个排序的哈希来保存原始数组中的每个唯一元素(也可以作为链表完成) 从数组中读取每个元素 如果哈希元素已经存在,则增加该键的计数(值) 如果哈希元素不存在则创建一个键值对(value = 1) 环
//打印每个元素 循环遍历散列和printf的键(“%d:%d \ n”,键,值); 如果您还需要表示零值,请实现lastKey并执行lastKey比较的键以确定键是否为零
排序和简单的程序/功能
答案 7 :(得分:0)
:
1)数组项目结束
2)空箱子
3)单身案件
#include <stdio.h>
int main() {
int input[] = {1,1,1,1,2,2,2,3,3,4};
if (sizeof(input) == 0) return 0;
int prev = input[0];
int count = 1;
int i;
int ARRAYSIZE = sizeof(input) / sizeof(int);
for (i = 1; i < ARRAYSIZE; i++) {
if (input[i] == prev) {
count++;
} else {
printf("%d=%d ", prev, count);
prev = input[i];
count = 1;
}
}
printf("%d=%d\n", prev, count);
return 0;
}
和测试用例:
when input is {}
-----------------------------------
jianlin@ubuntu:~$ gcc try.c
jianlin@ubuntu:~$ ./a.out
when input is {123}
-----------------------------------
jianlin@ubuntu:~$ gcc try.c
jianlin@ubuntu:~$ ./a.out
123=1
when input is {1,123}
-----------------------------------
jianlin@ubuntu:~$ gcc try.c
jianlin@ubuntu:~$ ./a.out
1=1 123=1
when input is {1,1,1,1,2,2,2,3,3,4}
-----------------------------------
jianlin@ubuntu:~$ gcc try.c
jianlin@ubuntu:~$ ./a.out
1=4 2=3 3=2 4=1
when input is {1,1,1,1,2,2,2,3,3,4,4}
-----------------------------------
jianlin@ubuntu:~$ gcc try.c
jianlin@ubuntu:~$ ./a.out
1=4 2=3 3=2 4=2