LeetCode #961 N-Repeated Element in Size 2N Array 重复 N 次的元素

961 N-Repeated Element in Size 2N Array 重复 N 次的元素

Description:
In a array A of size 2N, there are N+1 unique elements, and exactly one of these elements is repeated N times.

Return the element repeated N times.

Example:

Example 1:

Input: [1,2,3,3]
Output: 3

Example 2:

Input: [2,1,2,5,3,2]
Output: 2

Example 3:

Input: [5,1,5,2,5,3,5,4]
Output: 5

Note:

4 <= A.length <= 10000
0 <= A[i] < 10000
A.length is even

题目描述:
在大小为 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 为偶数

思路:

要么连续两个数中有重复值, 要么重复值间隔出现, 要么只有 4个元素的时候, 出现在数组的最后一个
时间复杂度O(n), 空间复杂度O(1)

代码:
C++:

class Solution 
{
public:
    int repeatedNTimes(vector& A) 
    {
        for (int i = 0; i < A.size() - 2; i++) if (A[i] == A[i + 1] or A[i] == A[i + 2]) return A[i];
        return A[A.size() - 1];
    }
};

Java:

class Solution {
    public int repeatedNTimes(int[] A) {
        for (int i = 0; i < A.length - 2; i++) if (A[i] == A[i + 1] || A[i] == A[i + 2]) return A[i];
        return A[A.length - 1];
    }
}

Python:

class Solution:
    def repeatedNTimes(self, A: List[int]) -> int:
        return sorted(A)[len(A) // 2] if sorted(A)[0] != sorted(A)[1] else sorted(A)[0]

你可能感兴趣的:(LeetCode #961 N-Repeated Element in Size 2N Array 重复 N 次的元素)