快樂的LeetCode --- 961. 重複 N 次的元素

往期回顧:

快樂的LeetCode — 287. 尋找重複數

題目描述:

在大小爲 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

解題思路1:

數組的長度爲2N,重複了N次的元素,肯定是出現次數最多的那個,所以直接使用collections包中的Counter模塊完成即可。


代碼1:

from collections import Counter
class Solution(object):
    def repeatedNTimes(self, A):
        N = len(A) // 2
        return Counter(A).most_common(1)[0][0]

解題思路2:

找重複數字的一種典型方法就是:(原始數組 - 求集合後的差值) / 長度差


代碼2:

class Solution(object):
    def repeatedNTimes(self, A):
        return abs(sum(A)-sum(set(A)))/(len(A)-len(set(A)))

解題思路3:

通過設置最大零數組,然後逐個遍歷原有數組,當元素首次出現時,加1。這樣,當滿足出現的次數時,我們即可找出重複元素。


代碼3:

class Solution(object):
    def repeatedNTimes(self, A):
        bitmap = [0 for _ in range(max(len(A), max(A)+1))]
        for num in A:
            if bitmap[num] == (len(A) // 2)-1:
                return num
            else:
                bitmap[num] += 1

題目來源:

https://leetcode-cn.com/problems/n-repeated-element-in-size-2n-array

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章