题目要求
给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。示例 1:输入:arr = [1,2,2,1,1,3]
输出:true
解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。
示例 2:输入:arr = [1,2]
输出:false
示例 3:输入:arr = [-3,0,1,-3,1,1,1,-3,10,0]
输出:true提示:1 <= arr.length <= 1000
-1000 <= arr[i] <= 1000
题目代码:
int compare(const void* a,const void* b)
{return *(int*)a - *(int*)b;
}
bool uniqueOccurrences(int* arr, int arrSize) {//创建数组int* number = (int*)malloc(sizeof(int) * 1000);int i = 0;int f = 0;int flag1 = 1;//往数组里面放入arr里的元素for(i = 0;i < arrSize;i++){int flag = 1;int j = 0;if(flag1 == 1){number[f] = arr[i];f++;flag1 = 0;}for(j = 0;j < f;j++){if(arr[i] == number[j]){flag = 0;break;}}if(flag == 1){number[f] = arr[i];f++;}}//创建一个数组,表示number里面各数出现的次数int* count = (int*)malloc(sizeof(int) * f);for(i = 0;i < f;i++){int count1 = 0;int j = 0;for(j = 0;j < arrSize;j++){if(number[i] == arr[j]){count1++;}}count[i] = count1;}//排序qsort(count,f,sizeof(int),compare);//判断for(i = 0;i < f - 1;i++){if(count[i] == count[i + 1]){return false;}}return true;
}
我这个时间复杂度比较高,大家如果觉得好的话,就请给个免费的赞吧,谢谢了^ _ ^