算法

数组

2020-12-05  本文已影响0人  王小鹏的随笔

例题1https://leetcode-cn.com/problems/unique-number-of-occurrences/ 1207. 独一无二的出现次数

思路1:判断哈希的长度和set的长度
思路2:哈希计数 + 数组排序
思路3:哈希计数 + set 重复判断

时间复杂度:O(n)
空间复杂度:O(n)

代码实现:

# 思路1:判断哈希的长度和set中的长度
class Solution:
    def uniqueOccurrences(self, arr: List[int]) -> bool:
        dic = Counter(arr)
        return len(dic) == len(set(dic.values()))

# 思路2:哈希计数+数组排序
class Solution:
    def uniqueOccurrences(self, arr: List[int]) -> bool:
        dic = Counter(arr)
        nums = list(dic.values())
        nums.sort()
        for i in range(1, len(nums)):
            if nums[i] == nums[i-1]:
                return False
        return True

# 思路3:哈希计数+ set重复判断
class Solution:
    def uniqueOccurrences(self, arr: List[int]) -> bool:
        dic = Counter(arr)
        arr = list(dic.values())
        visited = set()
        for i in range(len(arr)):
            if arr[i] not in visited:
                visited.add(arr[i])
            else:
                return False
        return True
上一篇 下一篇

猜你喜欢

热点阅读