leetcode.001(python3)
求两个数等于目标值:
先求差值,第二层循环内判断是否等于 差值。
循环写法:
for i in range(10):
print(i)
输出为:0到9
当给的是列表a时:range(len(a)) 即可实现循环列表长度的次数
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
for idx, x in enumerate(nums):
for idy, y in enumerate(nums[idx+1:],idx+1):
if x + y == target:
return [idx, idy]
这里简单解释一下,,前两行是题目给出的。
第二行:nums 等于 传来的List;target等于传来的目标值;return返回的值赋给List。
第三行:enumerate(nums),返回 [ ( 0,nums[0] ) , (1,nums[1]),…] 即返回了位置和值。分别赋给 idx 和 x。
第四行:enumerate返回的值从 nums[idx+1] 处开始,位置从idx+1开始。(不是0开始)。赋给 idy 和 y。
(idx、idy为nums的下标,x、y是该下标处的值)
第五行:判断两数相加是否等于目标值
第六行:成立,则返回 两处的下标值。
如果不是为了最求最短代码的话,将判断处的运算,提前到第二层循环前diff=target-x
,判断条件改为if y==diff:
。运算速度将提升许多。
我在想着通过,,大佬已经开始找乐子