题目 给你一个整数数组 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
推荐阅读
- 刷题|2021-07-16 力扣 189题 数组翻转(三种方法)
- 每日一题|每日一题-238. 除自身以外数组的乘积
- 力扣|力扣 961. 在长度 2N 的数组中找出重复 N 次的元素
- 算法|二叉树、二叉搜索树、AVL树、B树、红黑树
- 人工智能|用PaddlePaddle打比赛!
- 算法|我蚌埠住了,2000页算法LeetCode刷题笔记,对标字节跳动面试难度
- LeetCode|LeetCode-105-从前序与中序遍历序列构造二叉树
- 一起刷好题|用好java中的String类,这些OJ题你还怕吗()
- 一起刷好题|《二叉树刷题计划》——平衡二叉树