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

leetcode961. 在长度2N的数组中找出重复N次的元素

Leetcode哈希表算法

Leetcode题解——数据结构之哈希表

LeetCode961 重复 N 次的元素