Leetcode 数组哈希表重复 N 次的元素(961)
Posted Timeashore
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 数组哈希表重复 N 次的元素(961)相关的知识,希望对你有一定的参考价值。
题目
在大小为 2N?的数组 A?中有 N+1 个不同的元素,其中有一个元素重复了 N 次。
返回重复了 N?次的那个元素。
示例 1:
输入:[1,2,3,3]
输出:3
示例 2:
输入:[2,1,2,5,3,2]
输出:2
示例?3:
输入:[5,1,5,2,5,3,5,4]
输出:5
提示:
4 <= A.length <= 10000
0 <= A[i] < 10000
A.length?为偶数
解答
解法一:2N个空间,N+1个不同元素,遇到相同的就是答案。Time: O(N), Space: O(N)
解法二:根据可能的排列顺序解。有一半的数相等,那么排列中要么所有相同的数都不相邻,要么就必定存在相邻并相等的情形。Time: O(N), Space: O(1)
class Solution:
# 解法一
# def repeatedNTimes(self, A) -> int:
# s = set()
# for x in A:
# if x in s:
# return x
# else:
# s.add(x)
# 解法二
def repeatedNTimes(self, A) -> int:
if A[1] == A[3]:
return A[1]
for i in range(len(A)-1):
if A[i] == A[i+1]:
return A[i]
return A[0]
s = Solution()
ans = s.repeatedNTimes([1,2,3,3])
print(ans)
# [1,2,3,3]
# [3,3,2,1]
# [3,1,2,3]
# [1,3,2,3]
# [3,1,3,2]
以上是关于Leetcode 数组哈希表重复 N 次的元素(961)的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode刷题100天(阿里云周赛)—查找数组中的所有重复项(哈希)—day42
Leetcode刷题100天(阿里云周赛)—查找数组中的所有重复项(哈希)—day42