LeetCode 961. 重复 N 次的元素

  1. 重复 N 次的元素

题目描述

在大小为 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 为偶数

Python1

from collections import Counter
class Solution(object):
    def repeatedNTimes(self, nums):
        m = Counter(nums)
        n = len(nums) // 2
        for k, v in m.items():
            if v == n:
                return k
        """
        :type nums: List[int]
        :rtype: int
        """

思路:
用哈希表统计每个数在序列中出现的次数,返回出现了 N 次的数。

Python2(官方答案)

class Solution(object):
    def repeatedNTimes(self, nums):
        count = collections.Counter(nums)
        for k in count:
            if count[k] > 1:
                return k
        """
        :type nums: List[int]
        :rtype: int
        """

思路:
直接计数元素的个数。利用 HashMap 或者数组,这里使用 HashMap。
然后,元素数量超过 1 的就是答案。
注:共2N个元素,1个元素出现了N次,,一共有N+1个元素,则剩下的元素都是不重复的,唯一的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值