文章
4
粉丝
209
获赞
2
访问
2.2k
//使用哈希表
//先对输入的数组使用排序,然后存入哈希表中
//存的时候,先判断,如果说键相同,值相加,否则新插入一个键和值,默认值为1
//同时,另起一个数组b,存不重复的值,(原数组输入的时候可能有重复的值)
//然后对b排序,以b为输出数组
//判断时候,遇到 i==j时,遍历键,如果这个键的值大于一,说明重复了,就要输出一个(x,x);
//例如输入 3 1 2 3,没有重复的,所以直接全部输出
//如果输入5 1 2 2 3 3 ,有重复的值,就需要输出(2,2),(3,3),就在 i==j中进行判断输出
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int key;
int value;
}KV;
int count = 0;
KV Hash[30];
void Insert(int key){
for(int i = 0;i < count;i++){
if(Hash[i].key == key){
Hash[i].value ++;
return ;
}
}
Hash[count].key = key;
Hash[count].value = 1;
count++;
}
//
int compareNum(const void *a, const void *b) {
return *(int *)a - *(int *)b;
}
int main(){
int n;
int index = 0;
scanf("%d",&n);
int arr[n];
int b[n];
for (int i = 0; i < n; i++) {
int temp;
scanf("%d", &temp);
arr[i] = temp;
// 检查当前元素是否已经在数组中出现...
登录后发布评论
暂无评论,来抢沙发