【Leetcode题目01】两数之和

  • 题目要求:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1] 解释:因为 nums[0] + nums[1] ==9 ,返回 [0, 1] 

示例2:

输入:nums = [3,2,4], target = 6
输出:[1,2]

示例3:

输入:nums = [3,3], target = 6
输出:[0,1]
  • 第一种
    对于数组进行(i,j)的遍历,条件为nums[i] + nums[j] == target,若满足条件则立即执行return
  • Python语法知识点
 1.函数语法range(start,stop[,step])
 参数说明:
 start:计数从 start 开始,默认是从 0 开始。例如range(5)等价于range(0, 5)
 stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
 step: 步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1);步长为负数时可以从后往前遍历,例如:range(10, 0 , -1)[10,9,8,7,6,5,4,3,2,1],末尾不包括0
2.列表(list)
append()方法用于在列表末尾添加新的对象
list() = []   #空列表
list.append('Hello')
list.append('Student')
print list
输出结果:['Hello','Student']
  • Leetcode上python提交
class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        list_ans = []
        #外层循环指针i从数组从头开始遍历
        #内层循环指针j从数组尾部开始遍历,但是不能小于或等于i,即要保证j一定在i的后面 
        for i in range(0,len(nums)-1):
            for j in range(len(nums)-1,i,-1):
                if(nums[i]+nums[j]==target):
                    list_ans.append(i)
                    list_ans.append(j)
                    return list_ans
  • 第二种
  • Python语法知识点
1.函数语法python之enumerate()函数
用法:用于在迭代过程中同时获取元素的索引和值,返回一个枚举对象,包含了索引和对应的元素
语法:enumerate(iterable,start=0)
参数说明:iterable:必需,一个可迭代对象,如列表、元组、字符串
          start:可选,指定索引的起始值,默认为0
      
2.python之enumerate()函数用法
2.1  基本用法
fruits = ['apple','banana','orange']
for index,fruit in enumerate(fruits):
	print(index,fruit)    #  0 apple  1 banana   2 orange
2.2  指定起始索引
fruits = ['apple','banana','orange']
for index,fruit in enumerate(fruits,start=1):
	print(index,fruit)   # 1 apple 2 banana  3 orange
2.3  结合解包
for index,_ in enumerate(fruits):
	print(index)  #0 1 2
2.4 枚举对象转换为列表或元组
enum_list = list(enumerate(fruits))
enum_tuple = tuple(enumerate(fruits))
print(enum_list)  #[(0,'apple'),(1,'banana'),(2,'orange')]
print(enum_tuple) #((0,'apple'),(1,'banana'),(2,'orange'))
2.5获取特定条件的元素索引
fruits = ['apple','banana','orange']
#查找元素为'banana'的索引
index = next((index for index,fruit in enumerate(fruits) if fruit=='banana')),None)
print(index)   #1
  • Leetcode上python提交
class solution(object):
	def twosum(self,nums,target):
		hashtable = {}  #初始化空的字典hashtable,用于存储已遍历过的数字及索引
		for i,num in enumerate(nums): #遍历列表nums,i是索引,num是当前元素值
			if target - num in hashtable: #对于列表中每个元素都计算target-num,然后检查target - num 是否作为键(key)已经存在于 hashtable 字典中
				return [hashtable[target-num],i]  #如果存在于字典中,说明找到了一对数字,它们的和等于目标值 target。hashtable[target - num] 是与 target - num 相加得到 target 的那个数字的索引,i 是当前数字的索引。因此,返回一个包含这两个索引的列表
			hashtable[num] = i  #将当前遍历到的数字 num 作为键(key),将其在数组 nums 中的索引 i 作为值(value)
			#num为当前遍历到数组中的元素值,i为num 在数组 nums 中的索引位置 
		return []
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值