在大小为 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
思路:
第一种思路:
已知这个重复元素出现N次,而总共只有2N的元素,所以排序后该重复元素必定出现在中点附近,比如[1,3,3,5], [1,1,2,4], [1,2,5,5],然后因为中间有两个数,所以判断一下到底是哪一个就OK
第二种思路:
直接查找每个元素出现的次数,出现N次的那个元素就直接返回
class Solution(object):
def repeatedNTimes(self, A):
"""
:type A: List[int]
:rtype: int
"""
half_l = len(A) / 2
temp = sorted(A)
return temp[half_l] if temp[half_l] == temp[half_l + 1] else temp[half_l - 1]
=====================
class Solution(object):
def repeatedNTimes(self, A):
"""
:type A: List[int]
:rtype: int
"""
for a in A:
if A.count(a) == int(len(A)/2 ):
return a