leetcode刷题笔记-数组3

这篇博客详细介绍了LeetCode中与数组相关的几道经典题目,包括判断数组是否存在重复元素、查找绝对差不超过k的重复元素、快乐数的判断以及如何合并两个有序数组。博主分享了使用哈希表和双指针等方法解决问题的思路和Python代码实现。
摘要由CSDN通过智能技术生成

存在重复元素

给定一个整数数组,判断是否存在重复元素。
如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。

这里的解答用到了投机取巧的一种方法,使用set函数:

class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        n = len(nums)
        c = len(set(nums))
        if n>c:
            return True
        else:
            return False

介绍:
set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
我使用了append,insert等方法,但不知道为什么一直说超时,难道这样的时间复杂度是O(n2)?

下面说说传统方法,即哈希表的python实现:

class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        dic = {
   }
        for i in nums:
            if dic.get(i):
                return True
            dic[i]=1
        return False

这里可以看到,实际我们就是使用了字典,字典正是使用哈希表实现的。
我们这里使用了get()方法:
介绍:Python 字典 get() 函数返回指定键的值,如果值不在字典中返回默认值。
返回:返回指定键的值,如果值不在字典中返回默认值 None。

存在重复元素 II

给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。

这里仍然是使用哈希表,也就是字典完成题目,但是我们这次改变键值对的配置方法,将数字设置成key,而将数字对应的数组下标设置为value。然后:

  1. 每次检查新的数字是否存在于这个字典中,若存在,则将当前的数组下标与字典中相应的key对应的value相减&#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值