一、前言(1/4)

学习一下算法知识,感觉对以后都会有好处。目前定的任务是每周能做4道算法题,每次前言的位置都会打出(1/4)这样的样式,来督促自己学习。算法网站是leetcode,因为有很多人推荐。主要使用的语言是Python3。

二、算法题目

(u1s1,其实这个算法题把我稍微难到了一下)

三、分析

1、我的分析

这个算法因为给了一个实例,给了两个部分目标值(target)和一个数组值。我想的是我可以使用列表记录数组值的位置。以及target-num[i]的值是否存在于num[]里面。

#encoding:utf-8
class Solution:
    def twoSum(self,num,target):
        for i in range(len(num)):   #选取num的数组长度作为i的取值范围
            if target-num[i] in num[i+1:]:    #target-num[i]是为了求出另外一个值,并且查看那个值是否存在于num数组里面
                return [i,num.index(target-num[i],i+1)] #返回查找到的值的索引位置,index(x,i+1)代表的是从列表中i+1位置开始找到第一个匹配x的位置值

solution=Solution()    #对Solution类进行初始化
num=[2,7,11,15]
target=17
print(solution.twoSum(num,target))

2、厉害的分析

使用python里面的一个enumerate()

class Solution(object):
    def twoSum(self, nums, target):
        dic = {}
        for i, num in enumerate(nums):
            if num in dic:
                return [dic[num], i]
            else:
                dic[target - num] = i

四、学到了什么?

1、enumerate()函数:用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

num=[2,7,11,15]
num=list(enumerate(num))
print(num)

Results:

[(0, 2), (1, 7), (2, 11), (3, 15)]

2、python要先将类进行初始化

class num():
...
...

num=num()    #初始化