作者:风行汽车-赣州景通4S店 | 来源:互联网 | 2023-10-13 13:15
一、暴力破解,执行效率低,可能会超时【1】思路:从第0位开始,查看和后面几位的之和是否target#-*-coding:utf-8-*-#__author__:pansy#2022
一、暴力破解,执行效率低,可能会超时
【1】思路:从第0位开始,查看和后面几位的之和是否=target
# -*- coding:utf-8 -*-
# __author__:pansy
# 2022/5/11
# 在数组nums中查找和为target的两个值的下标并输出,假设只会存在一组值
def towSum(nums,target):
# 创建列表
list = []
# 从坐标位置1开始查找,
# 从坐标位置2开始查找:
# 两数字想加,记录
for x in range(len(nums)-1):
for y in range(x+1,len(nums)):
if nums[x] + nums[y] == target:
list.append(x)
list.append(y)
return list
nums = [3,2,4]
target = 6
print(towSum(nums,target))
二、优化1
【1】知识点1:index(目标值,起始位置)查找列表元素并返回索引位置
【2】知识点2:用in查询,in可以用在字符串、列表、集合、元祖、字典中等
【3】知识点3:用count计算数组中的值,统计在字符串/列表/元组中某个字符出现的次数,可以设置起始位置或结束位置。
# -*- coding:utf-8 -*-
# __author__:pansy
# 2022/5/11
# 在数组nums中查找和为target的两个值的下标并输出,假设只会存在一组值
# 优化1:判断target-nums[i]是否在数组中,用index()查找列表元素并返回索引位置(知识点1)
def towSum(nums,target):
lens = len(nums)
j = -1
# 从刚开始位置查询
for i in range(lens):
# 如果target-num[i]在list里面,用in查询,in可以用在字符串、列表、集合、元祖、字典中等(知识点2)
nums2 = target-nums[i]
if nums2 in nums:
# 如果找到的找到的值的次数是1并且num1 = num2,说明找到的是本值,需要继续找
# 用count计算数组中的值,统计在字符串/列表/元组中某个字符出现的次数,可以设置起始位置或结束位置。(知识点3)
if (nums.count(nums2) == 1) & (nums[i] == nums2):
continue
else:
# 输出num2的索引位置,从num1后面一位开始
j = nums.index(nums2,i+1)
break
if j>0:
return [i,j]
else:
return []
nums = [2,7,11,15]
target = 9
print(towSum(nums,target))