leedcode学习记录

写在前面的话初步做实际的练习题在开始的时候会耗费大量的时间,开始简单类型的题目虽然表述简单一看就懂但实际实现起来就十分困难,涉及到了算法和数据结构方面的知识,不得不说如果想要尽可能好得解决一个问题对数据结构和不同算法,还有你怎么把算法用自己的语言来表示要求很高。
Day1
题目1:两数之和
描述:给出包含不同整数的数组a(n),还有一个整数b,若a(x)+a(y)=b(x,y属于整数),求x,y的值
解法:

  1. 遍历。循环两遍,时间复杂度为O(n2
  2. 哈希表。通俗来讲在这里是一种用空间取代时间来节省时间的数据结构。一个个遍历a(n)并用数组存储起来,并在遍历的同时将b-a(i)(假设当前的下标为i)和之前的哈希表中的值进行对比。如果=则输出,若!=就继续存进哈希表里。时间复杂度为O(n),更优。这里需要注意的是哈希表和普通我们直接遍历不同,后者还需要再次遍历,而前者就是将后者的O(n)给简化了,只要查询字典中有没有相关的值即可。所以比之前少了一层循环。说白了哈希表就是其中元素是链表(链式结构,串在一起)的数组。
    以下为Python的解法:
class Solution:
    def twoSum(self, nums, target) :
        self.nums=nums
        self.target=target
        a={}
        for index1,key in enumerate (nums):
            b=self.target-key
            if index1>0 and b in a.values():
                return [list(a.values()).index(b),index1]
            a[index1]=key
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值