961. N-Repeated Element in Size 2N Array(easy)
In a array
A
of size2N
, there areN+1
unique elements, and exactly one of these elements is repeated N times.Return the element repeated
N
times.
Example 1:
Input: [1,2,3,3] Output: 3Example 2:
Input: [2,1,2,5,3,2] Output: 2Example 3:
Input: [5,1,5,2,5,3,5,4] Output: 5
这道题很简单,但是思考如何最优化时间复杂度和空间复杂度
1 worst,使用字典遍历哪个数量等于len/2,time:O(n+n),space:O(n)
class Solution(object):
def repeatedNTimes(self, A):
"""
:type A: List[int]
:rtype: int
"""
count = collections.Counter(A)
for val,num in count.items():
if num == (len(A) / 2):return val
2 worst 遍历list查询是否有重复,time:O(nlogn + n),space:0
class Solution(object):
def repeatedNTimes(self, A):
"""
:type A: List[int]
:rtype: int
"""
A.sort()
for i in range(len(A)):
if A[i] == A[i+1]:return A[i]
3 考虑题目的特殊性,一定存在一半的重复,所以sort之后这一半要么在前一半要么在后一半要么在中间
e.g 1 1 2 3
1 2 3 3
1 2 2 3
class Solution(object):
def repeatedNTimes(self, A):
"""
:type A: List[int]
:rtype: int
"""
A.sort()
length = len(A)
if A[0] == A[length/2 - 1]:return A[0]
elif A[length - 1] == A[length/2]:return A[length - 1]
else:return A[length/2]
time:O(nlogn),space:0