题目
在大小为 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?为偶数
解答
解法一:2N个空间,N+1个不同元素,遇到相同的就是答案。Time: O(N), Space: O(N)
解法二:根据可能的排列顺序解。有一半的数相等,那么排列中要么所有相同的数都不相邻,要么就必定存在相邻并相等的情形。Time: O(N), Space: O(1)
class Solution:
# 解法一
# def repeatedNTimes(self, A) -> int:
# s = set()
# for x in A:
# if x in s:
# return x
# else:
# s.add(x)
# 解法二
def repeatedNTimes(self, A) -> int:
if A[1] == A[3]:
return A[1]
for i in range(len(A)-1):
if A[i] == A[i+1]:
return A[i]
return A[0]
s = Solution()
ans = s.repeatedNTimes([1,2,3,3])
print(ans)
# [1,2,3,3]
# [3,3,2,1]
# [3,1,2,3]
# [1,3,2,3]
# [3,1,3,2]
原文地址:https://www.cnblogs.com/ldy-miss/p/12230179.html
时间: 2024-11-09 04:38:46