Python编程——001哈希表和数组

一、数组
数组,是有序的元素序列,组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式。 这些无序排列的同类数据**元素的集合称为数组。

区别于结构和类中的字段,数组中的所有元素都具有相同类型(这一点和结构或类中的字段不同,它们可以是不同类型)。数组中的元素存储在一个连续性的内存块中,并通过索引来访问(这一点也和结构和类中的字段不同,它们通过名称来访问)。
哈希表
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。
通过散列函数,数据元素将被更快地定位。

二、关于leetcode中的两个例题
01、两数之和
在这里插入图片描述

答案:

class Solution:
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        hashmap = {}
        for index, num in enumerate(nums):
            another_num = target - num
            if another_num in hashmap:
                return [hashmap[another_num], index]
            hashmap[num] = index
        return None

分析:解决这个问题的整体思路一般两种吧,一种就是挨个遍历看看和是否等于target;另一种就是对每个值求出准确值,把list里面的num和index里面是否存有我们想要的答案
202、快乐数
在这里插入图片描述

答案:

class Solution:
    def __init__(self):
        self.hash_dic = {}
    def isHappy(self, n):
        """
        :type n: int
        :rtype: bool
        """
        sums = sum(map(lambda x:x**2,map(int,str(n))))
        if sums == 1:
            return True
        if sums in self.hash_dic:
            return False
        else:
            self.hash_dic[sums] = 0
        return self.isHappy(sums)

**分析:**面对快乐数这个问题,关键点应该是not happynum,然后递归思想。我们在这个过程用到了一个很长的sum函数最外层的sum不说了,第一层map是对map执行lambda 这样一个操作,第二个map是把数字拆分成一个个单独的数字。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值