- 题目要求:给定一个整数数组 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 []