leetcode|力扣算法_961 在长度2N的数组中找出重复N次的元素

题目 给你一个整数数组 nums ,该数组具有以下属性:

  • nums.length == 2 * n.
  • nums 包含 n + 1 个 不同的 元素
  • nums 中恰有一个元素重复 n
找出并返回重复了 n 次的那个元素。(2<=n<=5000)
示例 示例1:
输入:nums = [1,2,3,3] 输出:3

示例2:
输入:nums = [2,1,2,5,3,2] 输出:2

示例3:
输入:nums = [5,1,5,2,5,3,5,4] 输出:5

思路 方法一:将nums排序,则最中间的两个值其中一个必为返回值;可以通过中间两个值的左右两侧,分别判断是否为返回值。
方法二:建立一个set变量,依次判断nums中的元素是否在set中,若不存在,则放入set中;否则为返回值。
代码 【leetcode|力扣算法_961 在长度2N的数组中找出重复N次的元素】方法一:
class Solution: def repeatedNTimes(self, nums: List[int]) -> int: n = len(nums) nums.sort() if nums[n // 2] == nums[n // 2 + 1] or nums[n // 2] == nums[n // 2 - 1]: return nums[n // 2] else: return nums[n // 2 - 1]

方法二:
class Solution: def repeatedNTimes(self, nums: List[int]) -> int: res = set() for num in nums: if num not in res: res.add(num) else: return num

    推荐阅读