LeetCode刷题笔记 5205. 独一无二的出现次数

mac2022-06-30  26

题目描述

给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。

如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。

示例: 输入:arr = [1,2,2,1,1,3] 输出:true 解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。

总结

用map或set时间复杂度有点高,这个题可以设计算法提前结束的,就像SC一样. 本来数组想用等差数列(1+2+3+…)优化大小(new int[34]),但后面发现他可能某个数特别多的情况,所以还是要new int[1001]

Sample Code

class Solution { public boolean uniqueOccurrences(int[] arr) { int[] n = new int[1001]; Arrays.sort(arr); int count = 1; for(int i = 1; i < arr.length; i++){ if(arr[i] == arr[i - 1]) count++; else{ if(n[count] == 1) return false; n[count] = 1; count = 1; } } // 排序数组最后一组还未判断,不管是[...,3,3,4]还是[...,3,3,4,4,4,4]都能判断 if(n[count] == 1) return false; return true; } }

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/unique-number-of-occurrences

最新回复(0)