• 存在重复元素(简单)


    存在重复元素

    概述:给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false

    1. 输入:nums = [1,2,3,1]
    2. 输出:true
    3. 输入:nums = [1,2,3,4]
    4. 输出:false
    5. 输入:nums = [1,1,1,3,3,4,3,2,4,2]
    6. 输出:true

    方法一:Counter

    思路:用 Counter 方法统计出现的次数,然后返回最大值进行判断即可。

    1. # Counter方法
    2. # 用Counter方法统计出现的次数,然后返回最大值进行判断即可。
    3. class Solution:
    4. def containsDuplicate(self, nums: List[int]) -> bool:
    5. return max(collections.Counter(nums).values()) >= 2

    方法二:字典

    思路:和上面的思路一致,不同在于手写了一个字典来统计出现的次数。

    1. # 字典
    2. # 和上面的思路一致,不同在于手写了一个字典来统计出现的次数。
    3. class Solution:
    4. def containsDuplicate(self, nums: List[int]) -> bool:
    5. nums_dict = {}
    6. for i in range(len(nums)):
    7. if nums[i] not in nums_dict:
    8. nums_dict[nums[i]] = 1
    9. else:
    10. nums_dict[nums[i]] += 1
    11. return max(list(nums_dict.values())) >= 2

    方法三:哈希表

    思路:此算法是对字典的优化,因为并不需要对所有数组循环完,若遇到已经存在的,返回即可。

    1. # 哈希表
    2. # 此算法是对字典的优化,因为并不需要对所有数组循环完,
    3. # 若遇到已经存在的,返回即可。
    4. class Solution:
    5. def containsDuplicate(self, nums: List[int]) -> bool:
    6. nums_dict = {}
    7. for i in range(len(nums)):
    8. if nums[i] not in nums_dict:
    9. nums_dict[nums[i]] = 1
    10. else:
    11. return True
    12. return False

    方法四:列表+排序

    思路:首先对列表排序,然后循环判断,若下一个值与当前值相等,即可返回。

    1. # 列表+排序
    2. # 首先对列表排序,然后循环判断,若下一个值与当前值相等,即可返回。
    3. class Solution:
    4. def containsDuplicate(self, nums: List[int]) -> bool:
    5. nums.sort()
    6. n = len(nums)
    7. if n <= 1:
    8. return False
    9. for i in range(n - 1):
    10. if nums[i] == nums[i+1]:
    11. return True
    12. return False

    方法五:set

    思路:用 set 容器对数组处理,若与原数组长度不一致,返回即可。

    1. # set
    2. # 用set容器对数组处理,若与原数组长度不一致,返回即可。
    3. class Solution:
    4. def containsDuplicate(self, nums: List[int]) -> bool:
    5. return len(nums) != len(set(nums))

    总结

    就这?...爷还手写了归并排序。我去他大爷的!

  • 相关阅读:
    Linux应用程序崩溃了怎么定位?
    《机器人SLAM导航核心技术与实战》第1季:第0章_SLAM发展综述
    深度学习八股文
    java中的直接内存
    Ubuntu离线或在线安装CMake
    Linux系列之链接
    IDEA插件推荐:TabColor
    Prometheus系列(2)之EC2安装Node端
    函数式编程
    【C++】C/C++内存管理
  • 原文地址:https://blog.csdn.net/m0_61661179/article/details/128035655