1 问题重述
题目难度:简单
2 思路变迁
- 本来想的各种统计 用很多容器 后来发现自己想困难了
- 其中一个重要的关键点是数组先排一下序 方便处理
- 一开始我想的是次数的个数既然不能固定 那就用动态数组ArrayList存那些个次数吧
- 这不是车猫篓子吗?想到了ArrayList想不到HashSet?不兼容重复元素的特性被你吃了?
- 哈哈哈哈哈哈哈哈哈哈
3 代码开搂
class Solution {
public boolean uniqueOccurrences(int[] arr) {
if(arr.length == 1 ){
//只有一个元素的数组返回true
return true;
}
if(arr.length == 2 ){
//只有一个元素的数组返回false
return false;
}
Arrays.sort(arr);
int i;
Set<Integer> set = new HashSet<Integer>(); //存放次数的集合
int count = 1; //记录某个数字出现的次数
int temp = arr[0];
for(i = 1; i <= arr.length-1 ; i ++ ){
if(temp == arr[i]){
count ++; //如果值相同就次数自增1
}else{
//如果值不同则添加到Set中,
//add()方法返回的是true(集合中不包含要添加的对象)
// 或者是false(集合中含有要添加的对象)
if(set.add(count)){
//集合中不包含要添加的对象
count = 1;
temp = arr[i];
}else{
//集合中含有要添加的对象 证明出现过这个数
return false;
}
}
}
return true;
}
}
哈哈哈 还是比较满意的!!!
PS:
- 另外发现在线的leetCode编程序竟然不用导包
- 比如Set HashSet竟然不用写:
import java.util.*;
- 真nb