zoukankan      html  css  js  c++  java
  • 【Leetcode 数组、哈希表】重复 N 次的元素(961)

    题目

    在大小为 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]
    
  • 相关阅读:
    Java五
    Java I/O流
    第二周学习笔记
    第一周学习笔记
    第六次作业修改版
    第六周作业
    java第四次作业(补)
    java第五次作业
    Java第三次作业
    java第二次作业
  • 原文地址:https://www.cnblogs.com/ldy-miss/p/12230179.html
Copyright © 2011-2022 走看看