leetcode-1:python基础,循环、条件、列表、字典的应用,enumerate、range函数以及2.0和3.0print的区别

题目:

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution.

Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

题意:数组中两个数相加,使结果等于某个给定的数,返回这两个数的下标。


leetcode的第一题:1. Two Sum

第一种方法,用了字典数据结构,比较炫酷,但是不能解决输入nums=[0,3,4,0],target=0的问题:

class Solution(object):

    def twoSum(self, nums, target):       #类里面的函数自带self参数,self可以在函数里用,而这个self也是使用时自动传递过去的
        """                                  #单行注释用#,多行注释用'''   ''' 或 """   """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        num_dict = dict()                   #定义词典
        for i,num in enumerate(nums):  #python的变量不用声明, i,num用于记录python内置函数enumerate的返回,即列表nums的下标和下标对应的数值
        num_dict[num] = i
        for num in nums:              #索引,对nums里面的每个数进行遍历,nums是list,for循环时对它的每个value进行遍历
        delta = target - num
        
        if delta == num:
           if num_dict[num] != num_dict[delta]:
              return [num_dict[num], num_dict[delta]]
              break
           else: 
              continue


        if delta in num_dict:     #字典的存储结构是(key,value), num_dict.keys()获取key的列表,num_dict.values()获取value列表,不带后缀,就默认对字典的key进行遍历
        return [num_dict[num], num_dict[delta]]
       
'''        
笔记:
  1、     
        twoSum函数的调用:
        s = Solution()
        print s.twoSum([3,2,4], 6)
    
        
  2、    
        enumerate的用法:
        enumerate()是python的内置函数,enumerate在字典上是枚举、列举的意思
        对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
        例如:
        list1 = ["这", "是", "一个", "测试"]
        for index, item in enumerate(list1):
        print index, item
        >>>
        0 这
        1 是
        2 一个
        3 测试
        
  3、python 2.0版本和3.0版本的关于print的区别
        2.0版本里用  print a

        3.0版本里需要用  print(a)    

 4、字典的数据结构



'''


第二种简单的方法:

class Solution(object):

    def twoSum(self, nums, target):      
        """                                  
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        list_len = len(nums)
        for i in range(list_len):
            for j in range(i+1,list_len):
                if nums[i] + nums[j] == target:
                    return [i,j]

'''        
笔记:
  1、     range()函数的用法:

>>> range ( 1 , 5 ) #代表从1到5(不包含5)
[ 1 , 2 , 3 , 4 ]
>>> range ( 1 , 5 , 2 ) #代表从1到5,间隔2(不包含5)
[ 1 , 3 ]
>>> range ( 5 ) #代表从0到5(不包含5)
[ 0 , 1 , 2 , 3 , 4 ]

'''


你可能感兴趣的:(leetcode-1:python基础,循环、条件、列表、字典的应用,enumerate、range函数以及2.0和3.0print的区别)