解题思路:
1.将原数组进行排序
2.遍历排序后的数组,如果当前数组中的元素与下一个元素相等,则计数器加1,若不相等,则从新的元素开始计数。将计数结果保存到一个新的数组中
3.遍历新数组,比较有没有数字相等的数,若有相等的数字表示数字不是独一无二出现的,返回false,反之,返回true
class Solution {
public boolean uniqueOccurrences(int[] arr) {
int len=arr.length;
if(len<2){
return true;
}
Arrays.sort(arr);
int[] res=new int[len];
int j=0;
int cnt=0;
for(int i=0;i<len-1;++i){
if(arr[i]!=arr[i+1]){
res[cnt++]=++j;
j=0;
}
else{
j++;
}
}
res[cnt]=j;
if(arr[len-2]==arr[len-1]){
res[cnt++]=++j;
}
else{
res[cnt++]=1;
}
for(int i=0;i<cnt;++i){
for(int k=0;k<cnt;++k){
if(res[i]==res[k]&&k!=i){
return false;
}
}
}
return true;
}
}