一. 题目
-
题目
-
示例
二. 方法一: hash表
-
解题思路
-
解题代码
def findLucky(self, arr: List[int]) -> int: result = [0 for _ in range(500)] for ele in arr: result[ele] += 1 for index in range(len(result) - 1, 0, -1): if index == result[index]: return index else: return -1
-
分析
时间复杂度: O(n)
空间复杂度: O(M) M = 500
三. 方法二
-
解题思路
- 先排序
- 再用双指针
-
解题代码
def findLucky(self, arr: List[int]) -> int: result = -1 left = 0 count = 0 arr.sort() while left < len(arr) - 1: right = left while right < len(arr) and arr[left] == arr[right]: count = right - left + 1 right += 1 if count == arr[left]: result = count left = right return result
-
分析
时间复杂度: O(nlogn)
空间复杂度: O(1)