题解 | #明明的随机数#
明明的随机数
http://www.nowcoder.com/practice/3245215fffb84b7b81285493eae92ff0
解题思路
首先读取随机数数量并保存到变量N 然后通过malloc申请一个动态内存空间保存读入的变量 之后将输入的随机整数保存在该动态内存空间之中 自定义一个函数处理重复的数据并且输出结果 调用该函数 return 0 结束main函数
自定义函数处理重复数据并且保存结果
首先新建一个大小为1001的数组q并且初始化为0 (1001是因为数组下标是从0开始的,但是随机数的范围是1-1000) 用数组q的下标表示输入的随机数,下标对应的元素表示该随机数的个数 将数组q中大于1的元素统一写为1 最后将数组中为1的元素的下标输出 这样同时实现了去重复和排序。
#include<stdio.h>
#include<stdlib.h>
#define LEN 1000
void find_same(int* p, int N)
{
int q[LEN]={0};
for(int i=0;i<N;i++)
{
int j = p[i];
q[j]++;
}
for(int j=0; j<LEN;j++)
{
if(q[j]>1)
q[j]=1;
if(q[j]==1)
{
printf("%d",j);
}
}
}
int main(void)
{
int N;
scanf("%d",&N);
int* p = (int*)malloc(sizeof(int)*N);
for (int i=0;i<N;i++)
{
scanf("%d",&p[i]);
}
find_same(p, N);
return 0;
}